A powerful Frappe/ERPNext app that seamlessly integrates Gamma.app interactive presentations with your quotations, enabling you to create, manage, and embed dynamic proposals directly within your ERP system.
- Interactive Presentations: Create and embed Gamma.app presentations directly in quotations
- Dynamic Linking: Automatic linking between Gamma Proposals and Quotations
- Multiple Proposal Types: Support for Main, Technical, Financial, Executive, Product Demo, and Case Study proposals
- Real-time Sync: Automatic synchronization of proposal data and status updates
- Embedded Viewer: View presentations directly within ERPNext interface
- Custom Print Formats: Professional quotation layouts with embedded Gamma proposals
- Auto-linking: New proposals automatically link to their quotations
- Migration Support: Existing proposals are automatically linked via database patches
- API Integration: RESTful API endpoints for external integrations
- Error Handling: Comprehensive error handling and logging
- Permission Management: Respects ERPNext permission system
Interactive Gamma proposals displayed directly in the quotation form
Comprehensive proposal management with status tracking and URL synchronization
- Frappe Framework v14+ or ERPNext v14+
- Python 3.8+
- Node.js 16+
# Navigate to your bench directory
cd $PATH_TO_YOUR_BENCH
# Get the app from repository
bench get-app https://github.com/your-repo/gamma_integration.git
# Install the app on your site
bench --site your-site.local install-app gamma_integration
# Migrate to apply database changes
bench --site your-site.local migrate# Clone the repository
git clone https://github.com/your-repo/gamma_integration.git apps/gamma_integration
# Install dependencies
bench setup requirements
# Install the app
bench --site your-site.local install-app gamma_integration-
From Quotation Form:
- Open any quotation
- Navigate to the "Gamma" tab
- Click "Create Gamma Proposal" button
- Fill in proposal details and Gamma URL
- Save to automatically link to quotation
-
Direct Creation:
- Go to Gamma Proposal doctype
- Create new proposal
- Link to existing quotation
- Proposal automatically appears in quotation's Gamma tab
- Main Proposal: Primary presentation for the quotation
- Technical Proposal: Detailed technical specifications
- Financial Proposal: Cost breakdown and pricing details
- Executive Summary: High-level overview for executives
- Product Demo: Interactive product demonstrations
- Case Study: Success stories and use cases
- Draft: Initial creation state
- In Review: Under internal review
- Shared: Shared with customer
- Approved: Approved by customer
- Rejected: Rejected by customer
The app supports multiple Gamma URL formats:
https://gamma.app/docs/your-doc-id
https://gamma.app/embed/your-embed-id
https://gamma.app/public/your-public-id
All formats are automatically converted to embed URLs for seamless integration.
The app automatically adds the following fields to Quotation:
- Gamma Proposals Section: Section break for organization
- Gamma Proposals: Child table for linked proposals
- Proposals Display: HTML field for embedded presentations
# hooks.py
doc_events = {
"Quotation": {
"on_update": "gamma_integration.gamma_integration.doctype.gamma_proposal.gamma_proposal.sync_quotation_data"
}
}frappe.call({
method: 'gamma_integration.gamma_integration.api.create_gamma_proposal',
args: {
quotation_name: 'QTN-2025-00001',
proposal_name: 'Technical Proposal',
proposal_type: 'Technical Proposal'
}
})frappe.call({
method: 'gamma_integration.gamma_integration.api.get_quotation_proposals',
args: {
quotation_name: 'QTN-2025-00001'
}
})frappe.call({
method: 'gamma_integration.gamma_integration.api.link_existing_proposals'
})frappe.call({
method: 'gamma_integration.gamma_integration.api.refresh_quotation_gamma_display',
args: {
quotation_name: 'QTN-2025-00001'
}
})- Gamma Proposal: Main proposal document with Gamma integration
- Quotation Gamma Proposal: Child table for linking proposals to quotations
- Server-side Controllers: Handle proposal creation, linking, and synchronization
- Client-side Scripts: Manage UI interactions and real-time updates
- API Layer: RESTful endpoints for external integrations
- Migration Patches: Ensure backward compatibility
gamma_integration/
βββ gamma_integration/
β βββ doctype/
β β βββ gamma_proposal/
β β βββ quotation_gamma_proposal/
β βββ patches/
β βββ print_format/
β βββ api.py
βββ public/
β βββ js/
β βββ css/
βββ fixtures/
βββ hooks.py
When upgrading from previous versions, run:
bench --site your-site.local execute gamma_integration.gamma_integration.patches.link_existing_gamma_proposals.executeTo export current customizations:
bench --site your-site.local export-fixturesUse the built-in test button in quotations:
- Navigate to any quotation
- Click "Gamma" β "Test API"
- Verify connection status
- Create a new quotation
- Add a Gamma proposal
- Verify automatic linking
- Check embedded presentation display
"No Gamma proposals linked" message
- Run the linking patch:
bench --site your-site.local execute gamma_integration.gamma_integration.patches.link_existing_gamma_proposals.execute - Refresh the quotation form
Proposals not displaying
- Check Gamma URL format
- Verify embed ID extraction
- Check browser console for JavaScript errors
Permission errors
- Ensure user has read/write access to Gamma Proposal doctype
- Check quotation permissions
Enable debug logging in site_config.json:
{
"developer_mode": 1,
"log_level": "DEBUG"
}We welcome contributions! Please follow these guidelines:
cd apps/gamma_integration
pre-commit install- Python: Follow PEP 8, use ruff for linting
- JavaScript: Use ESLint and Prettier
- Documentation: Update README for new features
- ruff (Python linting)
- eslint (JavaScript linting)
- prettier (Code formatting)
- pyupgrade (Python syntax updates)
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Update documentation
- Submit pull request
- β Fixed dynamic linking issue for existing proposals
- β Added automatic proposal linking on save
- β Enhanced error handling and logging
- β Improved client-side refresh mechanisms
- β Added migration patches for backward compatibility
- Added multiple proposal types
- Enhanced UI/UX for proposal management
- Improved API endpoints
- Initial release
- Basic Gamma.app integration
- Quotation embedding functionality
- No sensitive data is sent to Gamma.app
- All integrations use public embed URLs
- User permissions are respected
- Regular security updates
- Input validation and sanitization
- Secure API endpoints
For enterprise support and customizations, contact: [your-email@company.com]
MIT License - see LICENSE file for details.
Made with β€οΈ for the Frappe/ERPNext community
Transform your quotations with interactive Gamma presentations!
