v1.16.0

getlago/lagov1.16.0Nov 20, 2024by nudded

AI Summary

Continued frontend migration to Tailwind CSS and expansion of dunning campaign and billing features.

Key Highlights

  • Frontend migration to Tailwind CSS.
  • New dunning campaign features including settings and cascade plan changes.
  • Custom expressions for billing metrics.
  • Billable metrics rounding support.

New Features

  • Customer dunning settings
  • Custom expressions for billing metrics
  • Billable metrics rounding
  • Cascade parent plan changes
  • Salesforce customers webhooks

Full Release Notes

## What's Changed
* misc(docker): Fix dev events_raw topic by @jdenquin in https://github.com/getlago/lago/pull/424
* misc: fix docker-compose.dev typo by @ansmonjol in https://github.com/getlago/lago/pull/427
* fix(compose-dev): docker-compose migrate start script path by @electrosenpai in https://github.com/getlago/lago/pull/429
* Bump version to 1.16.0 by @nudded in https://github.com/getlago/lago/pull/430
**Full Changelog**: https://github.com/getlago/lago/compare/v1.15.2...v1.16.0


## Front changes

* bug: current usage period uses wrong dateTime by @ansmonjol in https://github.com/getlago/lago-front/pull/1848
* feat: Custom expressions for billing metrics by @stephenlago99 in https://github.com/getlago/lago-front/pull/1825
* chore(cors): Support new LAGO_DOMAIN by @jdenquin in https://github.com/getlago/lago-front/pull/1849
* feat: Billable metrics rounding by @stephenlago99 in https://github.com/getlago/lago-front/pull/1847
* misc: change Netsuite item mapping UX by @ansmonjol in https://github.com/getlago/lago-front/pull/1850
* bug(e2e): flaky assertion in beforeEach by @ansmonjol in https://github.com/getlago/lago-front/pull/1851
* misc: make sure Netsuite item's data is fully valid before flagging it as mapped by @ansmonjol in https://github.com/getlago/lago-front/pull/1852
* misc: migrate some Skeleton to use the new API by @ansmonjol in https://github.com/getlago/lago-front/pull/1853
* misc(Skeleton): migrate to remove unnecessary attribute by @ansmonjol in https://github.com/getlago/lago-front/pull/1854
* feat: customer dunning settings by @keellyp in https://github.com/getlago/lago-front/pull/1823
* bug: prevent current usage fetch for pending subscriptions by @ansmonjol in https://github.com/getlago/lago-front/pull/1856
* feat: Cascade parent plan changes by @stephenlago99 in https://github.com/getlago/lago-front/pull/1818
* bug: incoherent draft invoice data display by @ansmonjol in https://github.com/getlago/lago-front/pull/1858
* chore: migrate eslint to v9 by @keellyp in https://github.com/getlago/lago-front/pull/1846
* misc: remove sales order from Netsuite settings by @ansmonjol in https://github.com/getlago/lago-front/pull/1857
* bug: only show override modal on edit mode by @ansmonjol in https://github.com/getlago/lago-front/pull/1860
* misc: refactor keys page and add actions by @ansmonjol in https://github.com/getlago/lago-front/pull/1859
* misc: continue one Skeleton api migration by @ansmonjol in https://github.com/getlago/lago-front/pull/1861
* bug: use typography component for text display by @ansmonjol in https://github.com/getlago/lago-front/pull/1863
* misc(Skeleton): use className to define style by @ansmonjol in https://github.com/getlago/lago-front/pull/1862
* misc: reset password alert should be full screen by @ansmonjol in https://github.com/getlago/lago-front/pull/1865
* bug(cache): make sure to no re-fetch active queries on orga switch by @ansmonjol in https://github.com/getlago/lago-front/pull/1866

**Full Changelog**: https://github.com/getlago/lago-front/compare/v1.15.2...v1.16.0

## API changes
* feat(flexible aggregation) - Support flexible aggregation on billable metric by @nudded in https://github.com/getlago/lago-api/pull/2704
* feat(rounding): Add rounding fields to billable_metrics by @vincent-pochet in https://github.com/getlago/lago-api/pull/2754
* feat(rounding): Expose rounding attributes to APIs by @vincent-pochet in https://github.com/getlago/lago-api/pull/2764
* feat(dunning): campaign creation requires organization premium add-on by @ancorcruz in https://github.com/getlago/lago-api/pull/2759
* feat(dunning): find eligible customers and applied dunning campaign by @ancorcruz in https://github.com/getlago/lago-api/pull/2757
* feat(dunning): only one dunning campaign applied to organization on creation by @ancorcruz in https://github.com/getlago/lago-api/pull/2760
* fix: eager load invoice attachments by @lovrocolic in https://github.com/getlago/lago-api/pull/2776
* feat(rounding): Apply rounding to billable metric aggregation results by @vincent-pochet in https://github.com/getlago/lago-api/pull/2775
* Feat add ability to rotate api key by @floganz in https://github.com/getlago/lago-api/pull/2771
* fix: Ensure DataExports::CombinePartsJob uniqueness by @ancorcruz in https://github.com/getlago/lago-api/pull/2777
* misc(cors): Support new LAGO_DOMAIN by @jdenquin in https://github.com/getlago/lago-api/pull/2780
* feat(dunning): validate dunning campaign has at least one threshold by @ancorcruz in https://github.com/getlago/lago-api/pull/2762
* feat(netsuite): Cleanup syncs by @ivannovosad in https://github.com/getlago/lago-api/pull/2782
* fix: Ensure correct integration customer is used when syncing netsuite payments by @lovrocolic in https://github.com/getlago/lago-api/pull/2785
* feat(salesforce): Added customers webhooks by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2783
* misc(docker): Improve migrate script by @jdenquin in https://github.com/getlago/lago-api/pull/2778
* bug(DataExport) - Decrease batch size for data export & use tempfile by @nudded in https://github.com/getlago/lago-api/pull/2786
* Bug(DataExport) - update DEFAULT_BATCH_SIZE of ExportResourcesJob by @nudded in https://github.com/getlago/lago-api/pull/2788
* feat(salesforce): Add integration models by @ivannovosad in https://github.com/getlago/lago-api/pull/2787
* feat(api-key-management): Track when API key was last used by @floganz in https://github.com/getlago/lago-api/pull/2779
* feat(DataExport) - don't rely on SubscriptionSerializer for plan code and external id by @nudded in https://github.com/getlago/lago-api/pull/2792
* fix(custom_aggregation): Ensure custom properties are stored as Hash by @vincent-pochet in https://github.com/getlago/lago-api/pull/2781
* feat(Salesforce): Add ability to create salesforce customer  by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2794
* feat(salesforce): Add invoice resynced Webhook by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/2791
* feat(dunning): Permit creation of payment request without email by @rsempe in https://github.com/getlago/lago-api/pull/2784
* Feat salesforce services by @ivannovosad in https://github.com/getlago/lago-api/pull/2795
* feat(DailyUsage): Add daily_usages:fill_history task by @vincent-pochet in https://github.com/getlago/lago-api/pull/2751
* misc(nango): Increase the number of job retries in case of RequestLimitError by @ivannovosad in https://github.com/getlago/lago-api/pull/2798
* feat(dunning): Stop and reset counters for customers by @rsempe in https://github.com/getlago/lago-api/pull/2796
* Fix(anrok): return zero-tax breakdown if client facing taxes sum is 0 by @annvelents in https://github.com/getlago/lago-api/pull/2797
* feat(api-key-management): Add name to the API key model by @floganz in https://github.com/getlago/lago-api/pull/2793
* misc(filters-contracts): Define contracts to validate query objects filters by @ancorcruz in https://github.com/getlago/lago-api/pull/2650
* feat(dunning): schedule process dunning campaigns jobs every hour at 45' by @ancorcruz in https://github.com/getlago/lago-api/pull/2766
* fix(netsuite): Fix netsuite payment payload by @ivannovosad in https://github.com/getlago/lago-api/pull/2790
* fix(subscription): Ensure consistent ordering on the index end-point by @vincent-pochet in https://github.com/getlago/lago-api/pull/2801
* fix(customer): Add missing validation for shipping country by @floganz in https://github.com/getlago/lago-api/pull/2804
* fix(gocardless): Handle validation error with refund by @vincent-pochet in https://github.com/getlago/lago-api/pull/2805
* misc: Add more after_commit to avoid deserialization errors by @vincent-pochet in https://github.com/getlago/lago-api/pull/2803
* fix: Ability to generate legacy invoice pdfs without charges duration by @rsempe in https://github.com/getlago/lago-api/pull/2806
* feat(api-key-management): Add ability to create API key by @floganz in https://github.com/getlago/lago-api/pull/2802
* bug(BillableMetric) - BillableMetrics::DeleteEventsJob remove new-style events as well by @nudded in https://github.com/getlago/lago-api/pull/2810
* feat(plan-charges-cascading): Support charge filters cascading by @lovrocolic in https://github.com/getlago/lago-api/pull/2761
* feat(dunning): Use display name of customer in email by @rsempe in https://github.com/getlago/lago-api/pull/2811
* add migration to set parent_ids to charges by @annvelents in https://github.com/getlago/lago-api/pull/2738
* fix missing children on plan by @annvelents in https://github.com/getlago/lago-api/pull/2813
* improvement(Cascade) - Improve cascade jobs by passing in the expected amount_cents by @nudded in https://github.com/getlago/lago-api/pull/2812
* feat(netsuite): Remove sales orders services by @ivannovosad in https://github.com/getlago/lago-api/pull/2807
* misc(stripe): Refact payment method update webhooks by @vincent-pochet in https://github.com/getlago/lago-api/pull/2808
* fix(payment_request): Avoid deserialization issues by @vincent-pochet in https://github.com/getlago/lago-api/pull/2815
* fix: Ability to delete assigned customer taxes from the API by @rsempe in https://github.com/getlago/lago-api/pull/2814
* fix(gocardless): Handle GoCardlessPro::ValidationError when creating payment by @vincent-pochet in https://github.com/getlago/lago-api/pull/2817
* fix(adyen): Handle Adyen::AuthenticationError when creating the customer by @vincent-pochet in https://github.com/getlago/lago-api/pull/2820
* fix(netsuite): Aggregator jobs should be unique by @ivannovosad in https://github.com/getlago/lago-api/pull/2818
* fix(subscription upgrade): Upgrade subscriptions previously considered downgrade on amount increase by @ancorcruz in https://github.com/getlago/lago-api/pull/2823
* Bug(PayInAdvanceFee) - fix grouped_by logic for Fees::CreatePayInAdvanceService by @nudded in https://github.com/getlago/lago-api/pull/2824
* feat(api-key-management): Add ability to destroy an API key via graphql by @floganz in https://github.com/getlago/lago-api/pull/2809
* Add ability to rotate API key with expiry period by @floganz in https://github.com/getlago/lago-api/pull/2822
* fix(data-export): File key uniqueness by @floganz in https://github.com/getlago/lago-api/pull/2821
* misc(PaymentProviders): Refact webhooks folder structure by @vincent-pochet in https://github.com/getlago/lago-api/pull/2829
* fix(netsuite): Fix possible duplicate integration resources creation by @ivannovosad in https://github.com/getlago/lago-api/pull/2826
* fix(stripe): Handle missing payment by @vincent-pochet in https://github.com/getlago/lago-api/pull/2825
* Fix specs and payment payload by @ivannovosad in https://github.com/getlago/lago-api/pull/2830
* feat(dunning): Add deleted_at to dunning campaign threshold by @ancorcruz in https://github.com/getlago/lago-api/pull/2831

**Full Changelog**: https://github.com/getlago/lago-api/compare/v1.15.2...v1.16.0