mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-11 18:26:50 +00:00
Page:
Tech Doc: Orders and Adjustments updates
Pages
API Development
API documentation
Angular and OFN
Authentication
Automated Testing Gotchas
Bug severity
Bulk Edit Products admin interface
Code, the way we do things (2018)
Code Conventions
Code review process
Configuration
Continuous Integration
Creating new components
DFC Guide
Data initialization bootstrapping, seeding, and importing data
Data migration
Data model diagram (ERD)
Database migrations
Dependency updates
Design styleguide: colors and shadows
Design styleguide: fonts and text styles
Design styleguide: icons
Design styleguide: links and buttons
Design styleguide: navigation and menus
Design styleguide: size and spacing
Design styleguide: tables
Design tools
Developer Guidelines
Developer Manual
Development Environment Setup: Debian
Development Environment Setup: Fedora
Development Environment Setup: OS X (El Capitan)
Development Environment Setup: OS X (Mavericks)
Development Environment Setup: OS X
Development Environment Setup: Ubuntu
Development Environment Setup: Windows
Development Environment Setup: macOS (Sierra, HighSierra, Mojave and Catalina)
Docker: useful tips and commands
Emails
Enterprises login
Feature Testing Handbook
Feature template (epic)
Feature toggle with Flipper
Feature toggles
Home
How to do Code Reviews
Integration & API
Internationalisation (i18n)
Karma
Learning Rails
Locale and sample data
Making a great commit
Making a great pull request
Maps
Matomo Integration
Mexico
Overview
Parallelized test suite with knapsack
Patch Releases
Permissions
Pipeline development process
Product amounts units
Release testing automation
Releasing
Rubocop
Sales Tax
Set and Deploy on Heroku
Setting up Stripe in your local environment
Setting up Stripe on an OFN instance
Skylight setup
Slack notifications from GitHub
Spree Commerce customisation
Staging with Github Actions
Stimulus
Stripe testing
Stripe
Tech Doc: App Routes
Tech Doc: Checkout workflow
Tech Doc: OFN's Spree fork🍴
Tech Doc: OFN Data Model Single shipment per Order
Tech Doc: OFN Data Model Stock locations
Tech Doc: OFN Data Model
Tech Doc: Orders and Adjustments updates
Tech Doc: Scoping Variants and Products to Hubs with VariantOverrides
Testing GitHub Actions Locally with act
Testing Subscriptions
Testing and Rspec Tips
Testing process
The process of review, test, merge and deploy
Troubleshooting your instance
Turbo
Variant Overrides
Who
i18n
Clone
Updating adjustments can be a bit tricky in Spree due to a web of callbacks. Adjustments can be in three different states (simplified): open, closed and finalised. An adjustment can be updated either open or closed.
But when an adjustment is associated to an order, and update triggers the after_save callback update_adjustable which calls update! on the order and that eventually triggers a reset of the adjustment unless it's closed. Here is the rough call trace:
adjustment.update_attributestriggersadjustable.update!.Order#update!triggers theSpree::OrderUpdater.- The updater updates all shipments and adjustments.
Adjustment#update!doesn't do anything if the adjustment is closed.- When the adjustment is open,
originator.update_adjustmentis called. ShippingMethod#Adjustmentrecalculates the amount and callsadjustment.update_attribute_without_callbacks(:amount, compute_amount(calculable)).
All this is Spree code. It's not something we accidentally caused with OFN overrides. So Spree defines this way:
- Open shipping adjustments are always recalculated -> can't be changed to a custom value.
- Closed shipping adjustments are not recalculated -> can be changed to a custom value.
Home
Development environment setup
- Pipeline development process
- Bug severity
- Feature template (epic)
- Internationalisation (i18n)
- Dependency updates
Development
- Developer Guidelines
- The process of review, test, merge and deploy
- Making a great commit
- Making a great pull request
- Code Conventions
- Database migrations
- Testing and Rspec Tips
- Testing GitHub Actions Locally with act
- Automated Testing Gotchas
- Rubocop
- Angular and OFN
- Feature toggles
- Stimulus and Turbo
Testing
- Testing process
- OFN Testing Documentation (Handbooks)
- Continuous Integration
- Parallelized test suite with knapsack
- Karma
Releasing
Specific features
Data and APIs
- API documentation
- Authentication
- Integration & API
- Data migration
- Data model diagram (ERD)
- Stripe
- DFC Guide
Instance-specific configuration
External services
Design