Skip to content

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 gatewayDataTable, 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 recordPRSH_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 hubLogin, 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.