The SmartSoft FrameWork¶
The SmartSoft FrameWork is a set of internal VB.NET DLL assemblies (source in
framework_smartsoft/) shared across SmartSoft's product line — Inventory, POS, and
Service. The Inventory app is a thin consumer; the FrameWork holds the real data access,
business logic, printing, and configuration.
flowchart TB
subgraph Products["Products that consume the FrameWork"]
INV["Inventory"]
POS["POS / Kasir"]
SVC["Service"]
end
subgraph Core["Core"]
GEN["General<br/>DataAccessControl · Convertion · SystemRegistry"]
BLL["BLL<br/>STOCK · PROMOSI · POINTREWARD · DailyProcess"]
PAR["SmartSoft.Parameter<br/>PERUSAHAAN · Parameters · Computer"]
MYL["MyLib<br/>Login · CdKey · doc numbers · clock sync"]
end
subgraph Access["Typed data access"]
DAC["DataAccessControl<br/>tbMaster_* · tbTr_* · tv_* (per product)"]
end
subgraph IO["UI & I/O"]
GUI["GUI — base forms, controls, skinning"]
STR["Struk — receipt/label printing"]
NET["Net — email, FTP, modem"]
LAP["Laporan — report SQL builders"]
GIR["CetakGiro — cheque/giro printing"]
CLO["Closing — daily/monthly close, purge, restore"]
end
Products --> Core
Products --> Access
Products --> IO
Core --> Access
style Core fill:#e8eaf6,stroke:#3f51b5
style Access fill:#e0f2f1,stroke:#00897b
Assembly reference¶
FrameWork.SmartSoft.General — infrastructure¶
The cross-cutting plumbing every product depends on.
| Class | Role |
|---|---|
DataAccessControl |
The HAKDAC gateway — DataTable, NonQuery, DataFound, GetConnectionString, grid binders, schema checks. See Data Access. |
Convertion |
The HAKCVT helper — date/number/string formatting (C2N, D2S, N2D, Pembulatan) and the reversible password/registry cipher (PassToChar / CharToPass). |
SystemRegistry |
Reads/writes the Windows-Registry config (server, database, credentials, skin, expiry). |
ApplicationVersion |
Version checking (uses the EXE file timestamp). |
ModiStructure |
Schema/structure validation at startup. |
frmSystemSetting |
The settings UI shown when config is missing/invalid. |
FrameWork.SmartSoft.BLL — business logic¶
The domain brain. Everything stock-related routes through here.
| Class | Role |
|---|---|
STOCK |
The stock & costing engine. UpdateSaldoAll, UpdateSaldoGudang, GetAvgCost (moving weighted average). Every transaction instantiates it. See Stock & Costing. |
Stock_Gudang |
Per-warehouse (multi-gudang) balances. |
PROMOSI |
Promotions — getPromosiItem, getPromosiStruk, purchase-linked promos. |
POINTREWARD |
Loyalty points — UpdateStockPoint, ClosingStockPoint. |
DailyProcess |
End-of-day pipeline driver (Run) — backup, stock recompute, recaps, resets. |
ResetKasir |
Cashier reset / summarisation (ResetAll, CreateSummary). |
SALESORDER, UpdateDataHarian |
Sales-order logic; daily-update wrapper. |
DataAccessControl — typed data-access classes¶
The tb…/tv… pattern (set .ConnStr/.Criteria/.OrderBy, call BrowseData()). ~380
classes, split into shared + per-product bundles:
| Project | Count | Examples |
|---|---|---|
FrameWork.SmartSoft.DataAccess |
~129 shared | tbMaster_Barang, tbHist_*, REF_*, AuditTrail_* |
SmartSoft.Inventory.FrameWork.DataAccess |
~183 | tbTr_BackOffice_H/D, tbTr_StockOpname_*, tv_BackOffice_D |
SmartSoft.POS.FrameWork.DataAccess |
~48 | tbMaster_Kasir, tbMaster_Voucher, tbTemp_Penjualan |
SmartSoft.Service.FrameWork.DataAccess |
~29 | tbMaster_SparePart, tbTr_Service_D, tbMaster_Teknisi |
SmartSoft.Parameter — configuration entities¶
| Class | Role |
|---|---|
PERUSAHAAN |
The cPRSH company/branch record — PRSH_KODE (branch), PRSH_TGLAKTIF (system date), PRSH_CLOSING, receipt layout, tax flags, sync settings. |
tbTabel_Parameter / tv_Parameter |
The cPARAM/cPRM key-value parameter store (PRM_CLOSINGHARIAN, PRM_MULTIGUDANG, colours/fonts). |
GetParameter |
Façade that loads company + parameters + system parameters together. |
tbMaster_Computer / tv_Master_Computer |
The cCOMP per-workstation record (printer, active user, keyed by IP+station). |
REF_SYSTEM |
Name/value system properties (incl. licence expiry date). |
MyLib — shared utilities (HAKFUNC)¶
| Class | Role |
|---|---|
HAKFunction |
The HAKFUNC utility hub — Login, Station, access-menu builders, document-number generators GetNomor & NewNumber, warehouse lookup, images. |
Login |
LoginValidate — password check, the EDP/DLY backdoor, single-session enforcement. |
CdKey |
Licensing / CD-key validation. |
SynchroniseDateTime |
SetDeviceTime — slaves the workstation clock/locale to the SQL Server. |
DACOracle |
Oracle mirror of the SQL data-access helper (unused in deployment). |
RawPrinterHelper, clsFTP |
Raw printing; FTP client. |
FrameWork.SmartSoft.GUI — shared UI toolkit¶
| Area | Contents |
|---|---|
Control/ |
Reusable controls — FormButton, FormHeader, FormInput, FormGridButton, custom TextBox. |
Form/ |
Common dialogs — frmCalculator, frmGetNumeric, frmGetString, frmGetTanggal, frmGetPrinter, frmShowPDF, on-screen keyboards. |
MessageBox/ |
The custom MessageDialog (EnumMessageType / EnumMessageResult). |
Module/ShowForm.vb |
Centralised form display + theming/skinning. |
FrameWork.SmartSoft.Struk — receipt / label printing¶
| Class | Prints |
|---|---|
StrukKasir |
POS cashier receipts (CreateStrukKasir, image variants, service, cash-drawer). |
StrukBackOffice |
Back-office docs — BuktiPembelian, BuktiMutasi, BuktiPemakaianSendiri. |
StrukHrgJual, StrukPosisiStock, StrukReset, StrukTarikTunai, … |
Price labels, stock position, reset, cash-withdrawal slips. |
ModulePrinter / RawPrinterHelper |
Sends raw bytes to the printer via the Win32 spooler. |
FrameWork.SmartSoft.Closing — period lifecycle¶
| Class | Role |
|---|---|
UpdateDataHarian |
Daily recap + monthly closing (ProsesClosingBulanan, ProsesRekapSales). |
HapusData |
Purge old transaction data at closing (to a backup DB). |
RestoreData |
Restore archived transaction data. |
FrameWork.SmartSoft.Net — communications¶
FTP (inter-branch file exchange), GMail (SMTP send/receive), frmSendEmail
(compose UI), frmMessageModem (GSM/dial-up modem connectivity).
FrameWork.SmartSoft.Laporan — report SQL builders¶
LaporanPurchaseOrder (PO report queries) and PenjualanMarginProfit (sales
margin/profit). These build the SQL that Crystal Reports renders.
FrameWork.SmartSoft.CetakGiro — cheque / giro printing¶
BankMandiri and BCA, each with CetakGiro, BilyetGiro, BilyetCheck — laying out
amounts and payee onto bank-specific stationery.
Changing the FrameWork affects every product
Because Inventory, POS, and Service all consume these assemblies, a change to a shared class ripples across all three. That is why the Inventory app pins them as compiled DLLs and why FrameWork changes deserve extra review.