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

KomponenVersi
.NET Framework4.8
Acumatica ERP25.1
SQL Server2019 / 2022 (compatible)

Tools Developer

ToolKeterangan
Visual Studio2019 atau 2022 (Community/Professional)
Acumatica ERPLokal/server — untuk mendapatkan referensi DLL
GitVersion control
MSBuildSudah 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)

ScreenFungsi
SA100000Business Account (BA) Setup & approval mapping
SA100001Setup pengajuan harga khusus (numbering, approver)
SA100002Master faktur pengajuan
SA100003Setup change lot/serial (numbering, approval flow)
SA100005Setup Add-Ons (API endpoint, konfigurasi integrasi)

4.2 Master Data (SA200xxx)

ScreenFungsi
SA200001Master kategori produk (Tipe 1 — Group)
SA200002Master customer location class
SA207510Shipping zone management
SA210001Daftar master kategori (Tipe 1 / 2 / 3 hierarchy)

4.3 Transaksi & Approval (SA300xxx)

ScreenFungsi
SA300001Business Account approval workflow
SA300002Pengajuan harga khusus (header + lines + approval)
SA300003Master serah terima dokumen
SA300004Change lot/serial number (issue & receipt)
SA301000Listing SO dengan status otorisasi & pengajuan

4.4 Proses Faktur & Pengiriman (SA400xxx)

ScreenFungsi
SA400001Inquiry inventory balance per periode
SA400002Pick & Pack processing (scan item, create shipment)
SA400003Serah terima faktur kembali (dari salesman ke admin)
SA400004Serah terima berangkat (faktur keluar ke kurir)
SA400005API status log viewer
SA400007 *Batch 2 — Submit faktur ke admin piutang (release invoice)
SA400013Popup terima kembali faktur
SA400014Scan process faktur berangkat
SA400023Popup update status faktur kembali
SA400033Popup serah terima faktur kembali
* SA400007 menggunakan SASubmitFakturBatch2Maint — file aspx tersedia di server Acumatica.

4.5 Processing SO (SA500xxx)

ScreenFungsi
SA500001Process SO → Create Shipment (filter by order type, customer, storage type)

4.6 Modul WMS & Warehouse

Sub-ProjectFungsi Utama
TSCustomWMSscreensCodeReceive & put away barang dari PO Receipt
PickByBatchSourcePick by batch (SO worksheet integration)
TransferWMSSourceTransfer antar gudang via WMS
TSCycleCountCycle counting inventory
BAPBPenerimaan barang (approval-based)

4.7 Integrasi Eksternal

ModulTarget SistemKeterangan
APIBackEndBackend SO SyncSinkronisasi SO, invoice, mutasi kuota
APITMSMile (TMS)Routing & dispatch management
AISRouteManagementLogisticsVehicle, storage type, route transaction
ProofOfDeliveryInternalBukti pengiriman digital
05

Daftar Screen SA

No. ScreenGraph ClassFungsi
SA100000SABASetupMaintBusiness Account setup & approval configuration
SA100001SAPengajuanHargaKhususSetupMaintSetup numbering & approver harga khusus
SA100002SAFakturPengajuanMaintMaster faktur pengajuan ST
SA100003SAChangeLotSetupMaintSetup numbering & approval change lot
SA100005SASetupAddOnsMaintKonfigurasi add-ons & API integration
SA200001MasterKategoriSAMaintMaster kategori produk Tipe 1/2/3
SA200002CustomerLocationClassSAMaintKlasifikasi lokasi customer
SA207510SAShippingZoneGetMaintManajemen shipping zone
SA210001SAMasterKategoriListMaintList master kategori dengan hierarchy
SA300001SABussniesAccountApprovalMaintApproval Business Account
SA300002PengajuanHargaKhususMaintPengajuan & approval harga khusus
SA300003SAMasterSerahTerimaMaintMaster dokumen serah terima
SA300004ChangeLotSerialMaintChange lot/serial number (issue & receipt)
SA300005PLChangeLotExpMaintChange lot expiration date
SA301000ListingSOMaintListing SO + status otorisasi + filter pengajuan
SA400001AGCInventoryItemBalanceByPeriodMaintInquiry inventory balance per periode
SA400002SAPickAndPackProcessingMaintPick & pack processing workflow
SA400003SASerahTerimaFakturKembaliMaintSerah terima faktur kembali dari salesman
SA400004SerahTerimaBerangkatMaintSerah terima faktur berangkat ke kurir
SA400005SAAPIStatusMaintLog status integrasi API
SA400007 *SASubmitFakturBatch2MaintBatch 2 — submit faktur & release AR Invoice
SA400013PopUpTerimaKembaliFilterPopup scan terima faktur kembali
SA400014ScanProcessFakturBerangkatMaintScan & proses faktur berangkat
SA400023PopUpStatusKembaliFilterPopup update status faktur kembali
SA400033PopUpSerahTerimaKembaliFilterPopup serah terima faktur kembali
SA500001SAProcessSOMaintProcessing SO → Create Shipment (bulk)
ST300001STSerahTerimaFakturMaintSerah 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

DACKeterangan
SABatch1TerimaFakturHeader Batch 1 — penerimaan faktur dari salesman
SABatch1TerimaFakturLineLine detail Batch 1
SABatch2TerimaFakturHeader Batch 2 — submit faktur ke admin piutang
SABatch2TerimaFakturLineLine detail Batch 2 (link ke Batch 1)

Pengajuan Harga Khusus

DACKeterangan
SAPengajuanHargaKhususHeader pengajuan harga khusus
SAPengajuanHargaKhususLineDetail item pengajuan
SAPengajuanHargaKhususApprovalRecord approval
SAPengajuanHargaKhususHistoryHistory perubahan status
SAPengajuanHargaKhususSetupKonfigurasi setup

Change Lot / Serial

DACKeterangan
SAChangeLotNbrHeader request change lot
SAChangeLotNbrSetupSetup numbering & approval
SAChangeLotNbrApprovalRecord approval
SAChangeLotNbrIssueDetailsDetail issue lama
SAChangeLotNbrIssueDetailsSplitSplit detail issue
SAChangeLotNbrReceiptDetailsDetail receipt baru
SAChangeLotNbrReceiptDetailsSplitSplit detail receipt

Master Kategori Produk

DACKeterangan
SAMKategoriTipe1GroupMaster Tipe 1 (Group)
SAMKategoriTipe2PrincipalMaster Tipe 2 (Principal)
SAMKategoriTipe3KelompokMaster Tipe 3 (Kelompok)
SAMKategoriTipe1GroupInventoryMapping Tipe 1 → Item
SAMKategoriTipe2PrincipalInventoryMapping Tipe 2 → Item
SAMKategoriTipe3KelompokInventoryMapping Tipe 3 → Item

Serah Terima & Shipment

DACKeterangan
SAMSerahTerimaFakturBerangkatHeader serah terima berangkat
SAMSerahTerimaFakturBerangkatLineLine detail serah terima berangkat
SOShipmentHistoryHistory shipment per action/user
SOShipmentWorksheetHistoryHistory worksheet shipment

Setup & Konfigurasi

DACKeterangan
SASetupAddOnsKonfigurasi add-ons & API
STFakturMaster faktur ST
STFakturLineLine faktur ST
STFakturSetupNumbering setup faktur ST
ShippingZoneSAShipping zone
SAMileHubHub logistik mile
SARoutingMileDetailsDetail routing mile

Logging & Audit

DACKeterangan
SAAPILogLog aktivitas integrasi API
SAAPIMileLogLog 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-ProjectSolution File
ProcessingBatchProcessingBatch/ProcessingBatch.sln
BAPBBAPB/BAPB.sln
PickByBatchSourcePickByBatchSource/PickByBatchSource.sln
TSCycleCountTSCycleCount/TSCycleCount.sln
AISRouteManagementAISRouteManagement/Sunartha-RouteManagement.sln
ProofOfDeliveryProofOfDelivery/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 .dll
2
Bungkus customization dalam .zip Acumatica (via Customization Projects)
3
Login ke Acumatica → System → Customization Projects
4
Upload .zip → klik Publish ke environment yang dituju
5
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 DokumenLengkap yang bisa di-submit
  • TotalFaktur di 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 Open semua 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 Approved dan Normal yang 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 main
git 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-off

Konvensi 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 main
2
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 main

Kontak & Support

GitLab Issues: Gunakan fitur Issues di repository untuk bug report & feature request. Hubungi tim Sunartha melalui channel komunikasi internal untuk pertanyaan langsung.