π SIMANTRA - WEB
Aplikasi: SIMANTRA
Perusahaan: PT Sanghiang Perkasa
Tipe Project: .NET Web Application & Flutter Application
Tim Product Terkait: Hendi Hendrasta & Adhi Rizaldi
Tanggal Dokumentasi: Januari 2026
π Daftar Isiβ
- Pendahuluan
- Arsitektur Sistem
- Struktur Project
- Komponen Utama
- Teknologi & Framework
- Database & Koneksi
- API Endpoints
- Scheduler & Background Jobs
- Deployment
- Troubleshooting
- Kontak & Support
π Akses Aplikasiβ
Berikut adalah alamat akses cepat untuk environment aplikasi:
| Environment | URL Akses | Deskripsi |
|---|---|---|
| π Production | https://svnet.kalbenutritionals.com | Environment utama pengguna |
| π§ͺ Development | https://svnetdev.kalbenutritionals.web.id | Testing & staging area |
π― Pendahuluanβ
Tentang SIMANTRA (Sistem Manajemen Transportasi)β
SIMANTRA adalah sistem manajemen transportasi yang terintegrasi dengan sistem B2B Kalbe Nutritionals. Sistem ini mengelola seluruh proses transportasi mulai dari perencanaan order, loading, tracking, unloading, hingga reporting.
Tujuan Dokumentasiβ
Dokumentasi ini dibuat untuk memudahkan proses handover dan membantu tim developer baru memahami struktur, komponen, dan cara kerja modul SMT/SIMANTRA.
Lingkup Sistemβ
- Manajemen Order & Planning Order
- Proses Loading & Unloading
- Tracking & Timeline Pengiriman
- Dashboard & Reporting
- Auto GRN (Goods Receipt Note)
- Integrasi dengan Oracle APPS
- Mobile Apps API
ποΈ Arsitektur Sistemβ
Pola Arsitekturβ
Sistem menggunakan N-Layer Architecture dengan pemisahan concerns:
βββββββββββββββββββββββββββββββββββββββ
β Presentation Layer (API) β
β KN2019_B2B.App.SMT.Api β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββ
β Business Logic Layer β
β KN2018_B2B.Transaction.SMT.Logic β
β KN2018_B2B.Master.SMT.Logic β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββ
β Data Access Layer (DAL) β
β KN2018_B2B.Transaction.SMT.DataAccessβ
β KN2018_B2B.Master.SMT.DataAccess β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββββββββΌβββββββββββββββββββββββ
β Models & ViewModels β
β KN2018_B2B.Transaction.SMT.Models β
β KN2018_B2B.Master.SMT.Models β
βββββββββββββββββββββββββββββββββββββββ
Integrasi Sistemβ
- Oracle EBS (APPS): Integrasi untuk master data dan transaksi
- Global API: Integrasi dengan sistem global Kalbe
- Mobile Apps: API untuk aplikasi mobile transporter
- Scheduler Jobs: Background process untuk sinkronisasi dan blast order
π Struktur Projectβ
1. KN2018_B2B.Master.SMT.DataAccessβ
Fungsi: Data Access Layer untuk Master Data SMT
βββ Context/ # Database Context
βββ Edmx/ # Entity Data Model
βββ Properties/ # Assembly Info
βββ App.Config # Configuration
βββ packages.config # NuGet Packages
Teknologi:
- Entity Framework 6
- Oracle.ManagedDataAccess
- LINQ to Entities
2. KN2018_B2B.Master.SMT.Logicβ
Fungsi: Business Logic untuk Master Data SMT
βββ Logic/ # Business Logic Classes
βββ Properties/ # Assembly Info
βββ app.config # Configuration
βββ packages.config # NuGet Packages
Komponen Utama:
- Master data processing
- Validation rules
- Business rules implementation
3. KN2018_B2B.Master.SMT.Modelsβ
Fungsi: Data Models untuk Master SMT
βββ Models/ # Entity Models
βββ ModelsAPPS/ # Oracle APPS Models
βββ ViewModel/ # View Models
βββ Properties/ # Assembly Info
βββ packages.config # NuGet Packages
Jenis Models:
- Entity Models: Mapping dari database tables
- View Models: Data transfer objects untuk UI/API
- APPS Models: Integration models dengan Oracle APPS
4. KN2018_B2B.Transaction.SMT.DataAccessβ
Fungsi: Data Access Layer untuk Transaksi SMT
βββ Context/ # Database Context
βββ Dal/ # Data Access Layer Classes
β βββ DalAutoGrn.cs
β βββ DALChecker.cs
β βββ DALLoading.cs
β βββ DALSecurity.cs
β βββ DalSMTTransaction.cs
β βββ DalSmtTScheduler.cs
β βββ DALUnloading.cs
βββ Edmx/ # Entity Data Model
βββ SMTOracleADO.cs # Oracle ADO.NET Helper
βββ App.Config # Configuration
βββ packages.config # NuGet Packages
DAL Classes:
- DalAutoGrn: Auto Goods Receipt Note processing
- DALChecker: Checker/security guard operations
- DALLoading: Loading process data access
- DALSecurity: Security & authentication
- DalSMTTransaction: General SMT transactions
- DalSmtTScheduler: Scheduler operations
- DALUnloading: Unloading process data access
5. KN2018_B2B.Transaction.SMT.Logicβ
Fungsi: Business Logic untuk Transaksi SMT
βββ clsEmail/ # Email notification classes
βββ Logic/ # Business Logic Classes
β βββ SMT_AutoGRNLogic.cs
β βββ SMT_DashboardLogic.cs
β βββ SMT_ExpeditionLogic.cs
β βββ SMT_FillLogic.cs
β βββ SMT_OrderLogic.cs
β βββ SMT_PlanningOrderLogic.cs
β βββ SMT_ReportingLogic.cs
β βββ SMT_SchedulerLogic.cs
β βββ SMT_SIMONS.cs
β βββ SMT_SPMLogic.cs
β βββ SMT_TimelineLogic.cs
βββ Properties/ # Assembly Info
βββ App.config # Configuration
βββ packages.config # NuGet Packages
Logic Classes:
- SMT_AutoGRNLogic: Automatic GRN creation & processing
- SMT_DashboardLogic: Dashboard data aggregation
- SMT_ExpeditionLogic: Expedition management
- SMT_FillLogic: Data filling operations
- SMT_OrderLogic: Order management
- SMT_PlanningOrderLogic: Order planning & scheduling
- SMT_ReportingLogic: Report generation
- SMT_SchedulerLogic: Background scheduler operations
- SMT_SIMONS: Integration dengan SIMONS system
- SMT_SPMLogic: SPM (Supplier Performance Management)
- SMT_TimelineLogic: Timeline tracking & monitoring
6. KN2018_B2B.Transaction.SMT.Modelsβ
Fungsi: Models & ViewModels untuk Transaksi SMT
βββ Auto_GRN_Enhancement/ # Auto GRN enhancement models
βββ Constant/ # Constants & enumerations
βββ Models/ # Entity Models
βββ request_vm/ # Request ViewModels
βββ response_vm/ # Response ViewModels
βββ scheduler/ # Scheduler models
βββ smt_enhancement_2023/ # Enhancement 2023 models
βββ ViewModels/ # General ViewModels
βββ SMTTransactionUtilFunc.cs # Utility functions
βββ app.config # Configuration
βββ packages.config # NuGet Packages
Jenis Models:
- Request ViewModels: Input models untuk API
- Response ViewModels: Output models dari API
- Entity Models: Database entity mapping
- Scheduler Models: Background job models
- Enhancement Models: New features models
7. KN2019_B2B.App.SMT.Api β (Main API Project)β
Fungsi: RESTful API untuk SIMANTRA
βββ ActionFilter/ # Custom action filters
βββ App_Data/ # Application data files
βββ App_Start/ # Application startup configs
β βββ WebApiConfig.cs
β βββ RouteConfig.cs
β βββ FilterConfig.cs
β βββ BundleConfig.cs
β βββ AutoMapperConfig.cs
βββ Areas/ # MVC Areas
βββ Common/ # Common utilities
βββ Content/ # CSS, images, etc.
βββ Controllers/ # API Controllers
β βββ Simantra/ # SMT-specific controllers
β β βββ SMTAuthController.cs
β β βββ SMTBaseController.cs
β β βββ SMTCheckerController.cs
β β βββ SMTLoadingController.cs
β β βββ SMTMosTransController.cs
β β βββ SMTNCBACController.cs
β β βββ SMTScanRouteController.cs
β β βββ SMTSecurityController.cs
β β βββ SMTUnloadingController.cs
β β βββ SMTV2MasterController.cs
β βββ HomeController.cs
β βββ LogController.cs
β βββ MasterController.cs
β βββ TransactionsController.cs
βββ Data/ # Data files
βββ DataUpload/ # Upload storage
βββ Models/ # API models
βββ Providers/ # Custom providers
βββ Reports/ # Report templates
βββ Results/ # Result files
βββ Scripts/ # JavaScript files
βββ USER_DATA/ # User uploaded data
βββ Views/ # MVC Views
βββ Global.asax # Application entry point
βββ Startup.cs # OWIN startup
βββ Web.config # Web configuration
βββ packages.config # NuGet packages
API Controllers (Simantra):
- SMTAuthController: Authentication & authorization
- SMTBaseController: Base controller dengan common functions
- SMTCheckerController: Checker operations (security guard)
- SMTLoadingController: Loading process API
- SMTMosTransController: MOS transaction
- SMTNCBACController: NCBAC operations
- SMTScanRouteController: Route scanning
- SMTSecurityController: Security operations
- SMTUnloadingController: Unloading process API
- SMTV2MasterController: Master data v2
8. KN2023_B2B.SMTTransporter.Schedulerβ
Fungsi: Background Scheduler untuk SMT Transporter
βββ SMTTransporter.BlastOrder.Scheduler/
β βββ Program.cs
β βββ App.config
β βββ Properties/
β βββ packages.config
βββ SMTTransporter.SyncOracle.Scheduler/
βββ Program.cs
βββ App.config
βββ Properties/
βββ packages.config
Scheduler Jobs:
- BlastOrder.Scheduler: Blast order otomatis ke transporter
- SyncOracle.Scheduler: Sinkronisasi data dengan Oracle APPS
π» Teknologi & Frameworkβ
Backendβ
- .NET Framework 4.7.2+
- ASP.NET Web API 2
- ASP.NET MVC 5
- Entity Framework 6
- LINQ
Databaseβ
- Oracle Database (Primary)
- Oracle EBS (APPS)
- Custom SIMANTRA tables
- SQL Server (Logging & Monitoring)
Libraries & Packagesβ
- AutoMapper: Object-to-object mapping
- Newtonsoft.Json: JSON serialization
- Oracle.ManagedDataAccess: Oracle database connectivity
- Elmah: Error logging
- BotDetect: Captcha implementation
- Hangfire: Background job scheduling (if used)
Authenticationβ
- OAuth 2.0
- Bearer Token Authentication
- Custom Authorization Provider
ποΈ Database & Koneksiβ
Connection Stringsβ
Connection strings didefinisikan di Web.config:
<!-- Master & Transaction Entities -->
<add name="MasterEntities"
connectionString="..."
providerName="System.Data.EntityClient" />
<add name="SystemsEntities"
connectionString="..."
providerName="System.Data.EntityClient" />
<add name="TransactionEntities"
connectionString="..."
providerName="System.Data.EntityClient" />
Database Serversβ
Development:
- Service:
SHPDEV2 - Schema:
APPS
Production:
- (Update sesuai environment production)
Entity Framework Contextβ
- MasterEntities: Master data context
- SystemsEntities: System configuration context
- TransactionEntities: Transaction data context
π API Endpointsβ
Base URLβ
- Development:
http://localhost:[port]/api/ - Production:
https://appgw.kalbenutritionals.com/api/simantra/
Authentication Endpointsβ
POST /api/Simantra/SMTAuth/Login
POST /api/Simantra/SMTAuth/Logout
POST /api/Simantra/SMTAuth/RefreshToken
GET /api/Simantra/SMTAuth/ValidateToken
Master Data Endpointsβ
GET /api/Simantra/SMTV2Master/GetMasterData
GET /api/Simantra/SMTV2Master/GetVehicles
GET /api/Simantra/SMTV2Master/GetDrivers
GET /api/Simantra/SMTV2Master/GetRoutes
POST /api/Simantra/SMTV2Master/UpdateMasterData
Loading Endpointsβ
GET /api/Simantra/SMTLoading/GetLoadingList
GET /api/Simantra/SMTLoading/GetLoadingDetail/{id}
POST /api/Simantra/SMTLoading/StartLoading
POST /api/Simantra/SMTLoading/CompleteLoading
POST /api/Simantra/SMTLoading/ScanItem
PUT /api/Simantra/SMTLoading/UpdateLoadingStatus
Unloading Endpointsβ
GET /api/Simantra/SMTUnloading/GetUnloadingList
GET /api/Simantra/SMTUnloading/GetUnloadingDetail/{id}
POST /api/Simantra/SMTUnloading/StartUnloading
POST /api/Simantra/SMTUnloading/CompleteUnloading
POST /api/Simantra/SMTUnloading/ScanItem
PUT /api/Simantra/SMTUnloading/UpdateUnloadingStatus
Checker/Security Endpointsβ
GET /api/Simantra/SMTChecker/GetCheckpointList
POST /api/Simantra/SMTChecker/CheckIn
POST /api/Simantra/SMTChecker/CheckOut
GET /api/Simantra/SMTSecurity/GetSecurityCheckList
POST /api/Simantra/SMTSecurity/ValidateSecurity
Tracking & Monitoringβ
GET /api/Simantra/SMTScanRoute/GetCurrentLocation
POST /api/Simantra/SMTScanRoute/UpdateLocation
GET /api/Simantra/SMTScanRoute/GetRouteHistory
MOS Transactionβ
GET /api/Simantra/SMTMosTrans/GetMOSList
POST /api/Simantra/SMTMosTrans/CreateMOS
PUT /api/Simantra/SMTMosTrans/UpdateMOS
DELETE /api/Simantra/SMTMosTrans/DeleteMOS
βοΈ Scheduler & Background Jobsβ
1. SMTTransporter.BlastOrder.Schedulerβ
Fungsi: Mengirim blast order secara otomatis ke transporter
Proses:
- Membaca order yang ready untuk di-blast
- Memfilter berdasarkan kriteria blast
- Mengirim notifikasi ke transporter
- Update status order
Schedule: Setiap 30 menit (configurable)
Configuration (App.config):
<appSettings>
<add key="BlastOrderInterval" value="30" />
<add key="EnableBlastOrder" value="true" />
</appSettings>
2. SMTTransporter.SyncOracle.Schedulerβ
Fungsi: Sinkronisasi data dengan Oracle APPS
Proses:
- Pull data master dari Oracle APPS
- Update local database
- Push transaction data ke Oracle
- Logging & error handling
Schedule: Setiap 1 jam (configurable)
Configuration (App.config):
<appSettings>
<add key="SyncOracleInterval" value="60" />
<add key="EnableSyncOracle" value="true" />
</appSettings>
Running Schedulerβ
Development:
# Run dari Visual Studio atau Console
cd KN2023_B2B.SMTTransporter.Scheduler\SMTTransporter.BlastOrder.Scheduler
dotnet run
Production:
- Deploy sebagai Windows Service
- Atau gunakan Task Scheduler
- Monitoring melalui logs
π Deploymentβ
Prerequisitesβ
- .NET Framework 4.7.2+ installed di server
- IIS 8.5+ untuk Web API
- Oracle Client installed & configured
- SQL Server untuk logging (optional)
Deploy Web API (KN2019_B2B.App.SMT.Api)β
Step 1: Build Projectβ
# Di Visual Studio
1. Right-click project > Publish
2. Pilih profile atau buat baru
3. Target: File System / IIS / Azure
4. Configuration: Release
5. Klik Publish
Step 2: IIS Configurationβ
1. Buka IIS Manager
2. Create New Application Pool
- Name: SMT_API_Pool
- .NET CLR Version: v4.0
- Managed Pipeline: Integrated
3. Create New Website/Application
- Site Name: SIMANTRA_API
- Application Pool: SMT_API_Pool
- Physical Path: [Published folder path]
- Binding: http/*:80 atau https
4. Set Permissions
- App Pool Identity: Read & Execute
- Network Service: Full Control (jika diperlukan)
Step 3: Web.config Settingsβ
Update connection strings & app settings untuk production:
<appSettings>
<add key="txtImosApi_Url" value="https://appgw.kalbenutritionals.com/api/simantra/" />
<!-- Update production URLs -->
</appSettings>
Deploy Scheduler (KN2023_B2B.SMTTransporter.Scheduler)β
Option 1: Windows Serviceβ
# Install sebagai Windows Service
sc create "SMT Blast Order Scheduler" binPath= "[path]\SMTTransporter.BlastOrder.Scheduler.exe"
sc create "SMT Sync Oracle Scheduler" binPath= "[path]\SMTTransporter.SyncOracle.Scheduler.exe"
# Start services
sc start "SMT Blast Order Scheduler"
sc start "SMT Sync Oracle Scheduler"
Option 2: Task Schedulerβ
1. Buka Task Scheduler
2. Create Basic Task
3. Trigger: Schedule (sesuai kebutuhan)
4. Action: Start a Program
5. Program: [path]\SMTTransporter.BlastOrder.Scheduler.exe
6. Ulangi untuk SyncOracle.Scheduler
Logging & Monitoringβ
Elmah Error Loggingβ
// View errors
https://[your-domain]/elmah.axd
// Log custom errors
ErrorSignal.FromCurrentContext().Raise(new Exception("Error message"));
Application Logsβ
- Location:
App_Data/Logs/atau database - Review untuk troubleshooting
- Monitor error patterns
π Notes & Best Practicesβ
Coding Standardsβ
- Follow C# naming conventions
- Use async/await untuk I/O operations
- Implement proper error handling
- Add XML documentation comments
- Write unit tests untuk business logic
Security Guidelinesβ
- Validate all user inputs
- Use parameterized queries
- Implement rate limiting
- Enable HTTPS only (production)
- Regular security audits
- Keep dependencies updated
Performance Tipsβ
- Use
.AsNoTracking()untuk read-only queries - Implement caching strategy
- Optimize database indexes
- Use pagination
- Compress responses (gzip)
- Minimize API calls
Database Best Practicesβ
- Use transactions untuk multi-step operations
- Implement proper indexing
- Regular database maintenance
- Monitor query performance
- Backup strategy
π Version Historyβ
| Version | Date | Description | Author |
|---|---|---|---|
| 1.0 | 2023 | Initial SIMANTRA implementation | - |
| 1.1 | 2023 | Enhancement 2023 features | - |
| 2.0 | 2024 | V2 Master Controller & API improvements | - |
| 2.1 | 2025 | Current version | - |
π Appendixβ
A. Database Schema Overviewβ
- Lihat diagram ER di dokumentasi database terpisah
- Table naming convention:
SMT_[Module]_[Entity] - Stored procedures:
SP_SMT_[Operation]
B. API Response Formatβ
{
"success": true,
"message": "Operation successful",
"data": {},
"errors": [],
"timestamp": "2025-01-06T10:30:00Z"
}
D. Useful SQL Queriesβ
-- Check active orders
SELECT * FROM SMT_ORDER WHERE STATUS = 'ACTIVE';
-- View loading status
SELECT * FROM SMT_LOADING WHERE LOADING_DATE = TRUNC(SYSDATE);
-- Monitor scheduler jobs
SELECT * FROM SMT_SCHEDULER_LOG
WHERE LOG_DATE >= TRUNC(SYSDATE);
π Referensiβ
- Microsoft .NET Documentation
- ASP.NET Web API Documentation
- Entity Framework 6 Documentation
- Oracle .NET Documentation
Dokumentasi ini dibuat pada: 6 Januari 2026
Untuk Project: KN2018_B2B SIMANTRA Module
Maintenance: Update dokumentasi ini saat ada perubahan signifikan