Pharmacy Module Development Guide
Key Documentation
For detailed pharmacy development, refer to these files:
- Pharmaceutical Management API - REST API for managing VTM, ATM, VMP, AMP, VMPP, AMPP, categories, dosage forms, and measurement units
- GRN Fixes - GRN completion patterns
- Multi-Window Sales - Multi-window handling
- Cost Accounting Signs - Sign normalization
- Disbursement Signs - Disbursement conventions
- Quantity Decimals - Decimal validation
- Transfer Disbursement - Transfer workflow
- Purchase Order Workflow - PO workflow
Configuration Options
Pharmacy uses configOptionApplicationController.getBooleanValueByKey() for feature toggles. Key patterns:
Pharmacy Transfer is by Purchase Rate/Cost Rate/Retail RateDisplay Colours for Stock Autocomplete ItemsPharmacy Disbursement Reports - Display *(various column visibility)
Common Patterns
Stock Queries
- Always include
s.retired = falseands.itemBatch.item.retired = false - Filter inactive items with
s.itemBatch.item.inactive = false - Use DTOs for display, entities for business logic
Transfer Workflow
- Transfer Request -> Transfer Issue -> Transfer Receive
- Each step creates a Bill with appropriate BillType
- Sign conventions matter for cost accounting
Retail Sale
- Use StockDTO for autocomplete performance
- Cache autocomplete results for converter
- Defer expensive discount calculations
Backward Compatibility
- Never "fix"
purcahseRatespelling - it's a database column name - Never rename composite components without checking ALL usage