Acumatica ERP
Versi 25.1
.NET Framework 4.8
SQL Server 2019/2022
PLCustom
Acumatica
Repositori kustomisasi ERP Acumatica yang dikembangkan oleh PT Sun Artha Putra Mandiri (Sunartha) untuk memenuhi kebutuhan bisnis distribusi PT Pangan Lestari.
Platform
Acumatica ERP
Versi Production
25.1
Lead Developer
Hunain
Kode Versi
21.110.0032
01
Tentang Project
Modul kustomisasi Acumatica ERP yang mencakup pengembangan screen, business logic, dan tabel custom untuk mendukung proses bisnis distribusi PT Pangan Lestari.
Faktur & Dokumen
Manajemen faktur dan penerimaan dokumen Batch 1 & Batch 2
Pengiriman
Proses pengiriman dan serah terima barang/faktur ke kurir
Harga Khusus
Pengajuan harga khusus dengan approval workflow multi-level
WMS
Warehouse Management — picking, put away, cycle count
Kategori Produk
Manajemen kategori Tipe 1 / 2 / 3 dengan hierarchy
Integrasi Eksternal
Integrasi TMS, API Mile, dan sistem backend
Informasi Project
Developer
PT Sun Artha Putra Mandiri (Sunartha)
Lead Developer
Hunain
Repository
gitlab.sunartha.co.id/pangan-lestari-project/acunatica-pl-upgrade
02
Tech Stack & Prerequisites
Runtime
| Komponen | Versi |
|---|---|
.NET Framework | 4.8 |
Acumatica ERP | 25.1 |
SQL Server | 2019 / 2022 (compatible) |
Tools Developer
| Tool | Keterangan |
|---|---|
Visual Studio | 2019 atau 2022 (Community/Professional) |
Acumatica ERP | Lokal/server — untuk mendapatkan referensi DLL |
Git | Version control |
MSBuild | Sudah bundled dengan Visual Studio |
Referensi DLL Acumatica
Default HintPath:
C:\Site Acumatica\PLTesting\Bin\ — Jika path instalasi berbeda, update <HintPath> di file PLCustom.csproj.PX.Data.dll
PX.Data.BQL.Fluent.dll
PX.Objects.dll
PX.Common.dll
PX.Common.Std.dll
PX.CS.Contracts.dll
PX.DbServices.dll
Newtonsoft.Json.dll
03
Struktur Repository
acunatica-pl-upgrade/
│
├── ★ PLCustom/ # Modul utama — business logic & DAC
│ └── PLCustom/
│ ├── DAC/ # Custom DAC (62 tabel)
│ ├── DACExt/ # Extension DAC standar Acumatica
│ ├── APIBackEnd/ # Integrasi API backend
│ ├── APITMS/ # Integrasi API TMS (routing, mile)
│ ├── Services/ # Service layer (MileClassService)
│ ├── Descriptor/ # Custom lot serial descriptor
│ └── *.cs # Graph/Maint classes (83 files)
│
├── ★ PLCustom Source/ # ASPX pages & project XML
│ ├── Pages/SA/ # Screen SA (27 screens)
│ ├── Pages/PL/ # Screen PL
│ ├── Pages/ST/ # Screen ST (Serah Terima)
│ └── _project/ # Metadata & SQL DAC XML
│
├── ProcessingBatch/ # Batch processing SO operations
├── TSCustomWMSscreensCode/ # WMS screens (receive, put away)
├── PickByBatchSource/ # Pick by batch functionality
├── TransferWMSSource/ # WMS transfer operations
├── BAPB/ # Penerimaan Barang (approval)
├── TSCycleCount/ # Inventory cycle counting
├── ProofOfDelivery/ # Proof of delivery document
├── AISBlanketPO/ # Blanket PO management
├── AISRouteManagement/ # Route & logistics management
├── Custom Acumatica Zip Files/ # Package .zip untuk upload
└── README.html
04
Modul Bisnis
4.1 Setup & Konfigurasi (SA100xxx)
| Screen | Fungsi |
|---|---|
SA100000 | Business Account (BA) Setup & approval mapping |
SA100001 | Setup pengajuan harga khusus (numbering, approver) |
SA100002 | Master faktur pengajuan |
SA100003 | Setup change lot/serial (numbering, approval flow) |
SA100005 | Setup Add-Ons (API endpoint, konfigurasi integrasi) |
4.2 Master Data (SA200xxx)
| Screen | Fungsi |
|---|---|
SA200001 | Master kategori produk (Tipe 1 — Group) |
SA200002 | Master customer location class |
SA207510 | Shipping zone management |
SA210001 | Daftar master kategori (Tipe 1 / 2 / 3 hierarchy) |
4.3 Transaksi & Approval (SA300xxx)
| Screen | Fungsi |
|---|---|
SA300001 | Business Account approval workflow |
SA300002 | Pengajuan harga khusus (header + lines + approval) |
SA300003 | Master serah terima dokumen |
SA300004 | Change lot/serial number (issue & receipt) |
SA301000 | Listing SO dengan status otorisasi & pengajuan |
4.4 Proses Faktur & Pengiriman (SA400xxx)
| Screen | Fungsi |
|---|---|
SA400001 | Inquiry inventory balance per periode |
SA400002 | Pick & Pack processing (scan item, create shipment) |
SA400003 | Serah terima faktur kembali (dari salesman ke admin) |
SA400004 | Serah terima berangkat (faktur keluar ke kurir) |
SA400005 | API status log viewer |
SA400007 * | Batch 2 — Submit faktur ke admin piutang (release invoice) |
SA400013 | Popup terima kembali faktur |
SA400014 | Scan process faktur berangkat |
SA400023 | Popup update status faktur kembali |
SA400033 | Popup serah terima faktur kembali |
* SA400007 menggunakan
SASubmitFakturBatch2Maint — file aspx tersedia di server Acumatica.4.5 Processing SO (SA500xxx)
| Screen | Fungsi |
|---|---|
SA500001 | Process SO → Create Shipment (filter by order type, customer, storage type) |
4.6 Modul WMS & Warehouse
| Sub-Project | Fungsi Utama |
|---|---|
TSCustomWMSscreensCode | Receive & put away barang dari PO Receipt |
PickByBatchSource | Pick by batch (SO worksheet integration) |
TransferWMSSource | Transfer antar gudang via WMS |
TSCycleCount | Cycle counting inventory |
BAPB | Penerimaan barang (approval-based) |
4.7 Integrasi Eksternal
| Modul | Target Sistem | Keterangan |
|---|---|---|
APIBackEnd | Backend SO Sync | Sinkronisasi SO, invoice, mutasi kuota |
APITMS | Mile (TMS) | Routing & dispatch management |
AISRouteManagement | Logistics | Vehicle, storage type, route transaction |
ProofOfDelivery | Internal | Bukti pengiriman digital |
05
Daftar Screen SA
| No. Screen | Graph Class | Fungsi |
|---|---|---|
SA100000 | SABASetupMaint | Business Account setup & approval configuration |
SA100001 | SAPengajuanHargaKhususSetupMaint | Setup numbering & approver harga khusus |
SA100002 | SAFakturPengajuanMaint | Master faktur pengajuan ST |
SA100003 | SAChangeLotSetupMaint | Setup numbering & approval change lot |
SA100005 | SASetupAddOnsMaint | Konfigurasi add-ons & API integration |
SA200001 | MasterKategoriSAMaint | Master kategori produk Tipe 1/2/3 |
SA200002 | CustomerLocationClassSAMaint | Klasifikasi lokasi customer |
SA207510 | SAShippingZoneGetMaint | Manajemen shipping zone |
SA210001 | SAMasterKategoriListMaint | List master kategori dengan hierarchy |
SA300001 | SABussniesAccountApprovalMaint | Approval Business Account |
SA300002 | PengajuanHargaKhususMaint | Pengajuan & approval harga khusus |
SA300003 | SAMasterSerahTerimaMaint | Master dokumen serah terima |
SA300004 | ChangeLotSerialMaint | Change lot/serial number (issue & receipt) |
SA300005 | PLChangeLotExpMaint | Change lot expiration date |
SA301000 | ListingSOMaint | Listing SO + status otorisasi + filter pengajuan |
SA400001 | AGCInventoryItemBalanceByPeriodMaint | Inquiry inventory balance per periode |
SA400002 | SAPickAndPackProcessingMaint | Pick & pack processing workflow |
SA400003 | SASerahTerimaFakturKembaliMaint | Serah terima faktur kembali dari salesman |
SA400004 | SerahTerimaBerangkatMaint | Serah terima faktur berangkat ke kurir |
SA400005 | SAAPIStatusMaint | Log status integrasi API |
SA400007 * | SASubmitFakturBatch2Maint | Batch 2 — submit faktur & release AR Invoice |
SA400013 | PopUpTerimaKembaliFilter | Popup scan terima faktur kembali |
SA400014 | ScanProcessFakturBerangkatMaint | Scan & proses faktur berangkat |
SA400023 | PopUpStatusKembaliFilter | Popup update status faktur kembali |
SA400033 | PopUpSerahTerimaKembaliFilter | Popup serah terima faktur kembali |
SA500001 | SAProcessSOMaint | Processing SO → Create Shipment (bulk) |
ST300001 | STSerahTerimaFakturMaint | Serah terima faktur (modul ST) |
* SA400007 — File aspx tersedia di server Acumatica; kode logic ada di
PLCustom/PLCustom/SASubmitFakturBatch2Maint.cs.06
Custom DAC / Tabel Database
Batch Penerimaan Faktur
| DAC | Keterangan |
|---|---|
SABatch1TerimaFaktur | Header Batch 1 — penerimaan faktur dari salesman |
SABatch1TerimaFakturLine | Line detail Batch 1 |
SABatch2TerimaFaktur | Header Batch 2 — submit faktur ke admin piutang |
SABatch2TerimaFakturLine | Line detail Batch 2 (link ke Batch 1) |
Pengajuan Harga Khusus
| DAC | Keterangan |
|---|---|
SAPengajuanHargaKhusus | Header pengajuan harga khusus |
SAPengajuanHargaKhususLine | Detail item pengajuan |
SAPengajuanHargaKhususApproval | Record approval |
SAPengajuanHargaKhususHistory | History perubahan status |
SAPengajuanHargaKhususSetup | Konfigurasi setup |
Change Lot / Serial
| DAC | Keterangan |
|---|---|
SAChangeLotNbr | Header request change lot |
SAChangeLotNbrSetup | Setup numbering & approval |
SAChangeLotNbrApproval | Record approval |
SAChangeLotNbrIssueDetails | Detail issue lama |
SAChangeLotNbrIssueDetailsSplit | Split detail issue |
SAChangeLotNbrReceiptDetails | Detail receipt baru |
SAChangeLotNbrReceiptDetailsSplit | Split detail receipt |
Master Kategori Produk
| DAC | Keterangan |
|---|---|
SAMKategoriTipe1Group | Master Tipe 1 (Group) |
SAMKategoriTipe2Principal | Master Tipe 2 (Principal) |
SAMKategoriTipe3Kelompok | Master Tipe 3 (Kelompok) |
SAMKategoriTipe1GroupInventory | Mapping Tipe 1 → Item |
SAMKategoriTipe2PrincipalInventory | Mapping Tipe 2 → Item |
SAMKategoriTipe3KelompokInventory | Mapping Tipe 3 → Item |
Serah Terima & Shipment
| DAC | Keterangan |
|---|---|
SAMSerahTerimaFakturBerangkat | Header serah terima berangkat |
SAMSerahTerimaFakturBerangkatLine | Line detail serah terima berangkat |
SOShipmentHistory | History shipment per action/user |
SOShipmentWorksheetHistory | History worksheet shipment |
Setup & Konfigurasi
| DAC | Keterangan |
|---|---|
SASetupAddOns | Konfigurasi add-ons & API |
STFaktur | Master faktur ST |
STFakturLine | Line faktur ST |
STFakturSetup | Numbering setup faktur ST |
ShippingZoneSA | Shipping zone |
SAMileHub | Hub logistik mile |
SARoutingMileDetails | Detail routing mile |
Logging & Audit
| DAC | Keterangan |
|---|---|
SAAPILog | Log aktivitas integrasi API |
SAAPIMileLog | Log integrasi API Mile/TMS |
Extension DAC (Acumatica Standard)
DAC extension menambah field custom ke tabel standar Acumatica:
SOOrderSA, SOLineSA, SOShipmentSA,
ARInvoiceSA, ARPaymentSA, ARTranSA,
POReceiptSA, POLineSA,
InventoryItemSA, INTranSA, INRegisterSA,
CustomerSA, VendorSA, BAccountSA,
LocationSA, AddressSA, EPEmployeeSA
07
Build & Setup
Clone Repository
git clone https://gitlab.sunartha.co.id/pangan-lestari-project/acunatica-pl-upgrade.git
cd acunatica-pl-upgrade
git checkout main
Konfigurasi HintPath
Buka PLCustom/PLCustom.sln di Visual Studio. Jika path DLL berbeda, update PLCustom.csproj:
<HintPath>C:\[PATH_ACUMATICA_ANDA]\Bin\PX.Data.dll</HintPath>
Build Solution
Build → Build Solution (Ctrl+Shift+B)
Output: PLCustom/PLCustom/bin/Debug/PLCustom.dll
Sub-Project Solutions
| Sub-Project | Solution File |
|---|---|
ProcessingBatch | ProcessingBatch/ProcessingBatch.sln |
BAPB | BAPB/BAPB.sln |
PickByBatchSource | PickByBatchSource/PickByBatchSource.sln |
TSCycleCount | TSCycleCount/TSCycleCount.sln |
AISRouteManagement | AISRouteManagement/Sunartha-RouteManagement.sln |
ProofOfDelivery | ProofOfDelivery/ProofOfDelivery.sln |
08
Deployment ke Acumatica
Binding Path per Environment
🟡 Testing (PLTesting)
C:\Site Acumatica\PLTesting\
🔵 Development (DemoPL)
C:\Program Files\Acumatica ERP\DemoPL\
🟢 Production
Sesuai konfigurasi server production
Cara Upload Package
1
Build project → hasilkan file
.dll2
Bungkus customization dalam
.zip Acumatica (via Customization Projects)3
Login ke Acumatica → System → Customization Projects
4
Upload
.zip → klik Publish ke environment yang dituju5
Restart IIS jika diperlukan
File Package: Tersedia di folder
Custom Acumatica Zip Files/09
QA Checklist per Modul
SA400007 — Batch 2 Submit Faktur
- Scan SO number → line Batch 2 terisi otomatis
- Hanya SO dengan status
DokumenLengkapyang bisa di-submit TotalFakturdi header terupdate saat line ditambah/dihapus- Tombol Submit disabled setelah status
Submit/Close - Tombol Release Invoice memproses di background (tidak freeze UI)
- Tidak ada duplicate invoice di list setelah scan ulang
- Load Batch 1 by SO → semua line Batch 1 terkait termuat
- Load Batch 1 by Batch1 Nbr → semua line Batch 1 termuat
- Validasi: invoice status harus
Opensemua sebelum Submit
SA400003 — Serah Terima Faktur Kembali
- Filter Customer, Order Type, Status Faktur berfungsi
- Aksi Terima Faktur → popup scan no. faktur berfungsi
- Aksi Update Status Faktur → popup berfungsi
- History serah terima tersimpan per action
SA300002 — Pengajuan Harga Khusus
- Submit pengajuan → status berubah ke
Pending Approval - Approval flow berjalan sesuai mapping approver
- History perubahan harga tercatat
- Harga khusus terintegrasi ke price worksheet
SA300004 — Change Lot/Serial
- Tab Issue: scan lot lama bisa ditambahkan
- Tab Receipt: scan lot baru bisa ditambahkan
- Approval workflow berjalan
- Setelah approve → IN transaction terbentuk
SA500001 — Process SO
- Filter Order Type (SO/SS/SE/SA/SC/SK) berfungsi
- Filter Warehouse, Customer, Type 1, Storage Type berfungsi
- Bulk select + Create Shipment berhasil
- Hanya SO dengan status
ApproveddanNormalyang muncul
SA400002 — Pick & Pack Processing
- Scan item → quantity terkurangi
- Shipment terbentuk setelah konfirmasi
- Error muncul jika stock tidak cukup
WMS (TSCustomWMSscreensCode, PickByBatch)
- Receive & put away dari PO Receipt berfungsi
- Pick by batch mengikuti SO worksheet
- Transfer antar gudang bisa dibuat via WMS
10
Branch & Git Workflow
Strategi Branch
main (protected)
├── Daru ← branch aktif Purwandaru
├── Hunain ← branch aktif Lead Developer
└── [nama-dev] ← branch per developer
Alur Kerja
1
Buat branch baru dari main:
git checkout main && git pull origin maingit checkout -b [nama-anda]2
Kerjakan perubahan, commit:
git add [file yang diubah]git commit -m "Deskripsi singkat perubahan"3
Push ke remote:
git push origin [nama-anda]4
Buat Merge Request di GitLab → Review → Merge ke
main setelah QA sign-offKonvensi Commit Message
[Area] Deskripsi singkat perubahan
Contoh:
SA400007 Fix TotalFaktur counter N+1 query di RowSelected
SA300002 Tambah validasi tanggal efektif harga khusus
WMS Fix duplicate scan pada pick by batch
Remote Repository
https://gitlab.sunartha.co.id/pangan-lestari-project/acunatica-pl-upgrade
11
Tim & Kontribusi
S
PT Sunartha
Developer Company
PT Sun Artha Putra Mandiri — Pengembang utama kustomisasi ERP
H
Hunain
Lead Developer
Arsitektur sistem & development utama seluruh modul
P
Purwandaru
Developer
Optimasi performa & enhancement fitur
Cara Berkontribusi
1
Buat branch dengan nama Anda dari
main2
Pastikan kode sudah di-test di environment lokal
3
Sertakan deskripsi perubahan yang jelas di commit message
4
Buat Merge Request dan assign ke Lead Developer untuk review
5
Tunggu QA sign-off sebelum merge ke
mainKontak & Support
GitLab Issues: Gunakan fitur Issues di repository untuk bug report & feature request. Hubungi tim Sunartha melalui channel komunikasi internal untuk pertanyaan langsung.