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 Rate - •
Display Colours for Stock Autocomplete Items - •
Pharmacy 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