Backend
Last updated
Last updated
App version 3.4.11 "24h".
Fix user redirect after user impersonation.
Fix invalid link on user overview page.
Speed up accreditation export.
Invers action admin: use dynamic vehicle field.
Extend Invoice API with additional data about payers.
Re-enable Real User Monitoring (RUM).
Invoice REST API: extend payer data.
Localized values for decimal fields.
Deny Stripe payments higher than maximum amount.
Invoice REST API: allow workflow transitions and return associated payments.
Add permissions for org managers.
Grant org dashboard access to org managers.
Don’t shift invoices associated with invoice run.
Robustify block-based calculator.
Send org notifications to org managers.
Fix topnav error.
Fix streched photo.
Block-based tariff admin brush-up
Reservation status: Indicate payment authorization failure.
Session forwarding: add flag when user is impersonated.
Admin: keep all current filters.
InversAction admin: fix label.
On-board unit actions: add history of which triggered the action.
Add option to deactivate Desktop login for regular users.
Fix admin action "Impersonate user and redirect to mobile".
Hide reservation buttons for vehicles without on-board unit.
User overview: open Stripe dashboard URL in new window.
INVERS: optionally consider "doors"-status when ending reservation.
sevDesk: use correct invoice number in email subject.
I LOCK IT: adapt validation to meet new constraints.
Vehicle overview: add link to on-board unit.
Vehicle admin: enable search with diacritics.
Hide Delete-icon for referenced objects.
Prevent organization-overlapping rate plan assignments.
Reservation status view: change button colors.
User admin: gracefully handle non-existing users.
User admin: make active a drop-down filter.
Add geodata map link.
User search: display indicator when there are more results.
Fix styling for intermediate pages.
Fix styling of signup data view.
Add translations.
Number of engaged users replaced by the plain number of users.
Fix German translation string "By".
Remove breadcrumbs at the bottom of the change list view.
Django Unfold as new admin interface.
sevdesk: explicitly add VAT number missing in credit notes.
Account: return current Stripe verification result.
Extend GraphQL costCalculator query with authorization amount.
Block based reservation rates: fix conversion to gross in admin display.
Convadis customer: unprefixed capp user id is too hungry.
App version 3.4.10: Change the reservation status link.
Convadis Bluetooth: provide Convadis vehicle ID via GraphQL query.
Fix distance unit in authorize calculation report.
Fix inconsistency with decimal number separator.
Stripe Identity: translate more error messages.
Better explain the geofence violation fee.
Admin: display vehicles associated with billing cluster.
Don’t display invitation links for inactive sharing groups.
Stripe Identity: translate error messages.
User: remove sorting by state.
Include Invoice.attachment_url in sevDesk invoices / credit notes.
Admin: allow clearing all vehicles from a billing cluster.
Consider Stripe Identity result for auto-accreditation of users.
Prevent parallel execution of on-board unit actions.
GraphQL: introduce MALFORMED_RELAY_ID for Relay ID errors.
Let Celery tasks expire.
GraphQL: adapt error when tokenAuthWithKey fails.
Refer a friend: add translations.
GraphQL: malformed email should return VALIDATION_ERROR.
Hotfix for block-based reservation calculation.
Add filters and search fields for Affiliation campaign admin.
Display validation errors in Payer inline admin.
Add company registration number to payer.
Fix linking of reservation status.
Create shared Cloud link for XLS reports as part of the invoice run creation.
Polish admin interface for "Refer a friend".
Make attachment URL clickable in invoice admin.
Let org admin users with org manager role save organizations.
Re-add Stripe Identity link in user overview.
Refer a friend: create coupons for affiliates.
Refer a friend: add AffiliationCampaign admin.
Refer a friend: introduce SiteConfiguration field.
GraphQL allVehicles query: filter by bounding box.
sevDesk: automatically set DIRECT_DEBIT invoices to paid.
Do not regard failing email addresses as internal server errors.
Reimbursements: process & export zero-amount reservations.
Reservation status now is visible in the user overview.
Refer a friend: add AffiliationCampaign model.
Coupon: add field "internal_note".
Admin: don’t allow any changes for closed coupons.
Admin: let org admins delete not yet used coupons.
Session forwarding: include user ID in mobile URL.
Django security release 4.2.15
App version 3.4.7 “Session forwarding”
Add missing translation for "Settings".
Refer a friend: enhance GraphQL query to provide affiliation data.
Create new VerificationSession when a previous one is "consumed".
Session forwarding: make it a one-time key for increased security.
Convadis alarm 119: ignore parameters as they are not sent reliably.
Consider organization’s timezone on invoice item creation.
Register new user with optional affiliate token.
Consider Convadis alarm 125 (fueled up).
Consider preferred payment methods for SEPA PAIN.
Enhance security for session forwarding.
In reservation report, consider grace period.
Fix error for updateDataStore GraphQL mutation when unauthenticated.
Fix "Object not found" error for reservation GraphQL query.
Provide Convadis Bluetooth data via GraphQL query.
Allow user pseudonymization if user is associated with multiple organizations.
Rename reimbursements columns.
Exports: Add the overdraft period to the report.
I LOCK IT admin: Make device field clickable.
Convadis: prevent error when reservation cannot be synced immediately.
Display nice error to admins when trying to switch the reservation purpose.
sevDesk integration: use human-readable invoice numbers in invoice export.
sevDesk integration: adapt wording of outgoing emails.
sevDesk integration: robustify fetching of PDF.
SEPA-XML: adapt mandate date.
I LOCK IT: add vehicle link to admin views.
sevDesk integration: set zero-amount invoices to paid.
sevDesk integration: consider invoice with negative net amount as credit note.
Reservation admin: allow deleting reservations with empty distance.
Prevent starting reservation when authorize pending.
Remove coupon transactions on invoice run regenerate.
sevDesk integration: do not allow creating invoice with missing contact.
sevDesk integration: fix missing recipient on invoice.
Fix reimbursements report.
Improve usability of meta payment form.
Display error message when username already exists.
Fix overlapping buttons in user overview.
Convadis: prevent syncing reservations when authorize pending.
Robustify sevDesk implementation.
Prevent starting reservation when authorize pending: introduce new algorithm.
Don’t throw GraphQL errors caused by client.
Fix for overlapping buttons.
Support grace period for block-based tariff.
Extend vehicle data export.
sevDesk: on book & send, schedule payment.
Calculate fees with VAT for block-based tariffs.
Show most recent position on the map in admin.
Robustify sevDesk implementation.
GraphQL: process defined header parameters
Convadis Bluetooth: add CApp user ID.
Introduce UK locale.
Set rate plan on confirmation of VVV users.
Create XLSX reports for turnover guarantees.
Prevent users with pending meta payments from deleting their payment method.
Admin interface: allow change of beneficiary for coupons.
Limit the available fieldsets for special signup workflows.
Do not create SignupData
if user already active.
Desktop App 3.4.6.
Introduce strict reservation manipulation policy.
Link all devices in vehicle admin list view.
Invoice API: consider virtual invoice runs.
GraphQL: process defined header parameters.
Create Excel reports for payouts.
GraphQL: process defined header parameters.
Fix incorrect ordering in admin for coupons.
Implement session forwarding.
Support VAT for block-based tariff.
Prepare for strict reservation manipulation policy.
Invoice API: filter by invoice state.
Make VAT dynamic for internal invoicing service.
Create Invers action with status timeout when device checking times out.
Vehicle admin: move "position display mode" to tab "Location"
Add link to help.zemtu.com.
User overview: make internal note editable.
Remove "Switch to mobile version" link.
Convadis: consider key fob in alarm 95.
Correct ordering in reservation status admin.
Extend Invoicing API.
GraphQL: return the field "created" for UserBaseDataNode.
Adapt to new VVV API.
Provide reservations of inactive vehicles in reports.
Fix end rental failing with status "Unknown".
Beta version of Invoicing API.
GraphQL: provide mutation for storing registration tokens per user (push notifications).
Search for vehicle carsharing group name in the INVERS CloudBoxxes changelist.
Make distance calculation more resilient to invalid odometer values.
All group admins to select primary org when creating new users.
Charge shortened reservations: reflect the billed period in the invoice item description.
Make reservation fees persistent.
GraphQL: Also return the field created for UserNode.
createStripeVerificationSession return no credentials.
Stripe Identity: fill in user name automatically.
Display tags of packages in the list view.
Make INVERS push queue listener more resilient.
Fix KeyError: 'display_amount'.
Define preferred payment method per payer.
Introduce dedicated Smartcar queue.
Several sevDesk improvements: country code, ...
Open Stripe external links in separate window.
Choose preferred payment method for payer in admin.
Fully charge shortened reservations.
Make Payer more robust.
Display billing frequency in packages list view.
GUI 1.0: display all vehicle captions.
INVERS push queue listener: add heartbeat setting.
INVERS: consider maximum date when syncing RFID cards.
User overview: improve usability for confirming accreditation.
For annually billed packages display the whole date range.
Display billing frequency in packages list view.
User overview: lazily load accreditations & memberships.
Use modal for "Confirm accreditation" action.
Extend user overview: Lazy loading of reservations & dynamic filters.
Stripe Identity: Add url to user overview.
Show payment_terms in invoice admins.
For INVERS timeout, return human-readable message.
Compress static assets.
Add comment for "Confirm accreditation" action.
Rework reservation admin search.
Display the current active rate plan next to the accreditations.
Fix translations in membership card.
Improve accreditation confirmation workflow.
Speed up reservation admin search.
Show which filter is enabled for "Vehicle status" in reservation admin.
Introduce Real User Monitoring (RUM) for backend to detect performance issues early.
GraphQL: return user’s ID verification mode.
Improve backend performance.
Return additional Stripe Identity Verification Session fields.
Convadis: prevent that users with chip cards can start the reservation when payment authorization has failed.
Accreditation export: include details for users that have their accreditation withdrawn.
Use S3 storage for protected media files.
sevDesk: update note field for credit notes.
Additional custom data about user.
Gracefully handle aborted on-board unit actions.
Display annually billed packages to user.
Additional custom data about user.
Increase data upload files to allow syncing of more than 3000 invoices at once.
Prevent parallel runs of payment tasks.
Sevdesk: Create an invoice if only a personal contact exists in Sevdesk.
Reservation Admin: polish date display.
Allow skipping authorization check.
Make base exporter capable of handling dynamic columns.
Reservation table: adapt wording.
Introduce ZemtuLock for very long-running tasks.
Display reservations of inactive vehicles in user overview.
Set random reconnect interval for INVERS push queue listener.
Improve INVERS push queue listener resilience.
Better handling of meta payment for non-billable vehicle.
Add billing note reservation admin.
Enable Stripe identity for accreditation requests only.
Rework current reservation admin.
Optimize trip segment calculation.
Adapt calculation algorithm for turnover guarantee.
Properly round net total.
Display tags of rate plans in list view.
Invers: Periodically poll state of charge - improvements.
Stripe identity - improve user overview styling.
Invers: Periodically poll state of charge - improvements.
Extend user export with JSON data from "data store" and "additional data".
Invers: Gracefully handle errors.
Add missing script
close tag.
Repair cursor focus.
Make the horizontal scrollbar floating on the bottom of the screen.
INVERS: periodically poll state of charge for vehicles which are charging.
Clean up reservation admin view.
Improve user confirmation information.
Adding a new payment method via Stripe dashboard, does not make it the default payment method.
Fix user admin when user identity is enabled.
Extend GraphQL user query with rate plan + selected packages data.
ID fields are not properly displayed for inline admins.
Introduce "booked start" concept
Upgrade to Django 4.2 LTS 🥳
SevDesk support for invoices, continuation (SevDesk admin integration)
New billing calculator improvements
"Plugged in" state for INVERS was not being displayed correctly
Fixed & improved the trip segmenter for INVERS and Convadis
"Plugged in" status not shown correctly after reservation ending for INVERS.
Consider gross / net when checking invoice type.
Fix retry link is not working.
Billing not activated leads to error during signup.
Speed up Stripe webhook handling.
Improve email notification wording on authorize failure.
Fix periodic task of closing expired coupons.
Stripe identity: Integrate into the onboarding process.
Swisspass: Allow registering the same card for multiple users.
User overview: Edit button overlaps driver's license.
Prevent too big timespans for calculation of reservation time fees.
Serialize Stripe webhook requests.
Prevent users from deleting their payment methods.
Adapt code to user public S3 storage.
Enable Stripe Link.
Add OBU card on the vehicle overview page.
GraphQL: Return KYC verification results.
Enforce word count limits when syncing invoices with Stripe.
Use S3 storage for serving public media files.
GraphQL query: Prevent using I LOCK IT without successful credit card authorization.
INVERS - run authorize validator when using chip cards.
Adapt wording of payment authorize failed.
Make INVERS push queue listener more resilient.
Reservation status: Allow overriding Invers keyfob.
Fix Invers lost action recovery.
Do not re-create payment for deleted reservation.
Introduce psycogreen for Gunicorn with gevent workers.
Make VVV API ready for users with empty RFID card.
Show "Rate plan" in invoice items, unite "reservation" and "package" under one column "origin".
Add new examples to tariff examples.
Improve default values for new Stripe configuration.
Consider tax rate for invoice calculation report.
Fix potential security issue when using chip cards with INVERS.
Improve coupon admin.
Stripe configuration cannot be read when the reservation’s vehicle is not billable anymore.
Format links: Show which "texts" are clickable.
Let org admins change more fields in Site configuration and show all other fields in read-only mode.
Improve display of fieldset data of signup data.
Prevent overlapping AccreditationTariffPackageAssigment (Accreditation rate plans).
Enforce strict typing for GraphQL nodes.
Label SwissPass cards as imported.
Caruso coupon rate plan assignment adaptation.
Add a scope to GraphQL coupon node.
Coupon admin improvements.
Display "last position" on the map together with "home base" (when available).
Coupons applicable for tariff rates only: Tariff rate coupon validity, Admin improvements.
Increase rate-delay when sending stripe invoices.
Prevent deadlock when creating two reservations.
Consider grace period for QuickRent tariffs.
Make coupons applicable for rate plans.
Extend user export with payer info.
Add user’s state to GraphQL user query.
Prevent Payer objects from reading data from the user when no user is set.
Send Reimbursements via SevDesk.
Simplify payer admin.
Fix displaying of help button in Stripe configuration.
Improve Payer admin to display payment method status.
New icon for reservation status.
Consider SEPA in payment method check.
Nicer handling of all payment retry links.
App version 3.4.1 "Guideline".
Display link to Invoicing party from org admin.
Display the last "reservation closed position" in vehicle overview.
Make zip and city optional in user admin.
Display the user's company in the user overview.
Improve responses for retry links.
Fix invalid fee calculation when using a grace period.
Consider tariff minimum fee.
Add invoice explanation widget to reservation (as feature flag).
Add general grace period.
Improve vehicle and reservation status vehicle link.
Update to Django 3.2.20.
Make vehicle clickable in reservation status view.
Improve performance of Payer admin view.
Prevent double charging of one-time application fee.
Improve Smartcar misuse detection.
GraphQL query returning current user’s payment data status per vehicle.
Reservation status view: make vehicle clickable and add Desktop button.
Deliver static files via S3 storage.
Shorten zip code field to 10 characters.
Action code for tariff exemptions.
Robustify automatic closing of unused reservations.
Fix error message when logging in with invalid credentials.
Fix wrong note in GraphQL reservation query.
Allow accessing driver’s license history.
Fix GraphQL error when providing no query string.
Add GraphQL query and mutation for action codes.
Improve description of virtual chip cards.
Use decimal values with three digits in Authorize & Capture configuration.
Add information about authorize calculation to meta payment.
Allow searching for user primary key in data store.
Add menu entry for tariff matrix.
Add translations for email notifications on payment authorize failure.
Improve algorithm and help texts for dynamic authorize.
Prevent parallel reservation deletion.
Make the vehicle clickable in reservation status view.
Fix signup data being displayed twice.
On invoice run collection, skip authorized reservations.
Do not show billing clusters to org managers.
Integrated version of Stripe retry link.
Prevent payer change when payment already authorized.
Display errors in reservation status view.
Prevent INVERS API calls for other environments.
Prevent rare case with multiple authorize payment transactions.
Introduce Smartcar environments.
Add dedicated fields to marketplace API.
Set meta payment to error state on failed payment.
Add option "Skip zero-amount authorize".
Get rid of INVERS push queue workaround for imprecise odometer values.
Process one-time application fees asynchronously.
On reservation creation, authorize dynamically calculated amount.
Smartcar: Retrieve GPS positions when discharging >= 2% per hour.
INVERS: Only use precise odometer values for reservation distance calculation
Convadis: Prevent empty language ID when vehicle is for reseller organization.
Integration of inline help.
Add VAT exemption for payer.
Add vehicle map.
User interface improvements.
Turn off legacy booking interface for new users.
Only allow one-time fees for rate plan’s application fee.
Remove additional tabs in accreditation admin.
Fix accreditation admin forms.
Prevent IBAN data from being overwritten when saving user profile.
Meta payment admin: improve default filtering and add date hierarchy filter.
Handle case when customer deletes payment method after authorization.
Fix user pseudonymization.
Enable generic search by primary keys in admin.
Consider Convadis alarm 87.
Include link to meta payment from invoices.
Only use precise odometer values for INVERS distance calculation.
Fix sevDesk command line.
Provide migration path from "Enforce collective invoicing" to "One payment, one invoice".
For INVERS, store odometer on reservation start and end.
Allow search in json_data for user and datastore admins.
Remove redundant "Delete reservation" action in admin.
Allow invoice run generation for "One payment, one invoice".
Remove date_start filter in reservation admin.
Introduce late return grace period for reservation rates.
Re-enable Smartcar disconnect action in admin interface.
Send email to user when payment authorization has failed.
Enhance sevDesk implementation.
Change user admin link to overview.
Fix confirm signup action for users without billing signup data.
App version 3.4.0 "Reservation status".
sevDesk integration.
Consider all users assigned to chip card (INVERS).
Rephrase and translate Convadis error messages.
Textual brush-up of reservation status view.
Consider final position for Smartcar vehicles.
Improve error message when payment method is missing.
Sort reservations chronologically in user overview.
App version 3.3.47 "Miles and more".
Let org admins add new GPS positions in admin interface.
Use un-accent in admin user search.
Add filter to limit displayed meta payments in admin.
Improve usability in reservation status view.
Consider all authentication backends on account delete request.
Adapt to new Smartcar error messages.
Prevent reopening of deleted reservations.
Introduce "one-time" billing frequency and adapt formatters.
Prevent that reservation invoice items ending this month, end up in the previous month’s invoice run.
Skip tracking INVERS actions not initiated by Zemtu.
Grant admin access to invoices of virtual invoice runs.
On reservation creation, send out email notification.
Meta payment: search for internal note.
Check coupon subscription validity.
Smartcar: periodically retrieve positions for vehicles in use.
Add label & description to coupon subscription.
Enhance reservation status view: umbrella feature actions, colors, filter by interpreted status.
Upgrade to Smartcar API 2.0.
Sort reservation status by most recent action.
Reservation status view for support staff.
Nice HTML email notifications for org administrators.
Enhance org manager role.
Store org in JWT token for additional security.
On reservation re-close, don’t recreate drafted invoice item.
Let org supporters see all reservation details.
Cancel authorized amount when meta payment amount is fully covered by coupons.
New user role "Org manager".
Increase resilience of meta payment handling.
Improve geocoding lookup performance.
Improve object purging.
Several meta payment fixes.
Allow skipping payment method check for individual payer.
Address German speakers informally.
Ensure unambiguous org access for users with shared usernames.
Gracefully handle two users with same email addresses try to log in.
Fix I LOCK IT token admin view.
Allow user registration with same username for multiple organizations.
Introduce billing frequency for package.
In chip card admin, add accreditation circle filter.
Polish rate plan admin.
Update VVV API to work with duplicate usernames.
Add billing frequency for rate plan.
Add application fee for rate plan.
Add internal note for INVERS device.
Improve meta payment admin.
Handle minimum Stripe amounts when having to capture slightly more than the authorized amount.
Provide link to meta payment in email notifications on failed payments.
Rename billing models and introduce new wording: rate plan, tariff, ...
Display accreditations to user role accreditor in user overview.
Jazzmin 2.6.
Add internal note for coupon subscription.
Add JSON field for site configuration for maximum flexibility.
Add payer field to reservation invoice items tab.
Add payer tab to user change form.
Make Stripe payments more robust and prevent retries.
Return IBAN / BIC data even when the user does not have a payer.
Show us state field only when needed.
App version 3.3.43 "Equality".
Authorize & Capture milestone 4: "Authorize & Capture with reservation start blocking on authorize failed".
Increase resilience when INVERS push queue is down.
Prevent reservation start, when authorize failed.
Periodically close coupons.
Add additional fields to user model.
Fix LogDNA custom handler.
Fix meta payment in ERROR state.
Provide "Authorize & Capture with fixed amount" workflow.
Make authorize lead time configurable.
On vehicle creation, set it to inactive by default.
Before telling the user that ignition is on / keyfob is out, check connection to INVERS device.
Authorize & Capture milestone 2: "Authorize & Cancel on time".
Provide "Authorize & Cancel" workflow.
Allow limiting number of coupons per campaign.
In user admin order users by joined date by default.
Adapt REST Vehiclemonitoring API to provide state of charge without pseudo-intelligent checks. This is now consistent with the GraphQL API.
Finalize zero-amount Stripe invoices.
Retry odometer fetch for Smartcar vehicles when first try fails.
When retrying meta payments, create new payment transactions.
Brush-up user overview.
Ignore INVERS debug RFID events.
Return SEPA data via user REST API only when really set.
Finalize and send Stripe draft invoices on successful payment.
Fix error when saving tariff form when having too many decimal places.
GraphQL mutation & query for iCalendar feed.
Consider Convadis Alarm 95.
Extend User REST API with SEPA data.
User overview brush-up: milestone 1.
Let org admins change is_deletion_pending
for users.
Properly close zero-amount meta payments.
Let org admins assign coupons based on campaigns.
Automatically close zero-amount meta payments.
Synchronize metadata with Stripe for payment transactions and customers.
Update to latest INVERS API schema.
Update Stripe Python client.
Skip sending non-reservation related zero-amount invoices.
Convert coupon code to lowercase and enforce restrictions.
Display coupons in user overview.
When creating coupon credit items consider net / gross.
Fix invoice run export.
When meta payment retry fails, set error state.
Coupon subscriptions.
Admin polishing for coupons.
Coupon campaigns & coupons.
Add admin action to confirm user’s email address.
Add logging to reimbursements calculator.
Handle INVERS push queue events with identical timestamps.
Fix error when adding new billing cluster.
Allow multiple payout per billing cluster.
Allow setting reservation buffer per reservation via admin.
Send email notification when user requests account deletion.
Fix error when Convadis box was not connected.
Add GraphQL mutation deleteAccount.
Allow searching for JWT tokens by username.
Miles support milestone 1 "view".
Add action to retry failed meta payments.
Support currency "CZK".
Remove payment methods in profile and link to mobile app instead.
Change German translations from formal to informal.
Create Stripe invoices using the configured amount mode (tax rate inclusive vs. exclusive)
Improve readability of ReservationAccounting
Put license plate first when synchronizing with INVERS FleetControl.
Improve wording for invoices that are collected shortly.
GraphQL totalDrivenDistance now is in km or miles.
Protected reservations can be edited again.
Gracefully handle already existing Stripe tax IDs.
GraphQL query now returns info when auto-accreditation is enabled.
Fix error when viewing Smartcar actions.
Prevent parallel execution of invoice run generation.
Add GraphQL cost calculator query.
Polish miles support.
Improve workflow for collectible Stripe invoices: update payment status.
Add missing translations for "book and send" invoice actions.
Fix error when Smartcar vehicle has changed its owner.
Improve miles support.
Enforce Stripe API limits.
For Stripe invoices, add "This invoice is paid".
Display "Default options" for INVERS accounts.
Don’t apply tax twice for 24 hours cap.
Export invoice number when exporting invoice run.
Add missing data in SEPA export.
Fix formatting issue when 24 hours cap is set.
Consider invoicing service when creating reimbursements.
Group supporters are now able to manage reservations of proxied users.
Clarify rental tariff labels.
Handle signals when closing manual workflow reservations.
Fully implement connection to Stripe as invoicing service.
Update tax ids of Stripe customers.
Handle invoice run for instant Stripe invoicing.
Gracefully recover on Stripe webhook event error.
Detect misuse of Smartcar vehicles.
Add miles support for trip segments.
Introduce fixed footer for Stripe configuration.
Hide archived Stripe tax rates.
Fix Stripe PDF creation.
Tag unused Convadis reservations.
Improve miles support.
Prevent scheduling of payments for zero amount invoices and paid invoices.
Introduce zero tax rate & days until due for Stripe configuration.
Fix Stripe PDF export.
App version 3.3.42 "Fix translations".
24 hours cap: add option to include mileage per 24 hours block.
Send attachments via email for Stripe invoices.
Enhance miles support in admin interface.
Display pending amount for meta payment.
Fix ordering of availability query.
App version 3.3.41 "Modesty".
Add requestAccreditation GraphQL mutation.
Enhance Stripe error notifications.
Display pending meta payment amounts.
Add Stripe customer billing address.
Style password reset page.
Allow group admin users to add new users.
Prevent changing password for demo users & ensure strong passwords.
Make driver’s license & avatar optional.
Introduce primary organization per customer.
Properly redirect users with incomplete signup.
Introduce accreditation auto-confirmation per organization.
Extend car sharing tariff with 24 hours time cap & included mileage.
For low battery notification, add voltage.
Redirect users with incomplete signup to signup assistant.
Improve translations.
Allow manual workflow transitions for meta payments & add internal note.
Add requestMembership GraphQL mutation.
Improve Stripe invoice synchronizer.
Hide RentalTariff when not available for organization.
Rearrange fields for Payer admin: move "linked user" to last tab and turn it off by default.
Consider paid invoices when calculating credit notes for reservations.
Fix timing issues with meta payments and Stripe invoices.
Add purpose filter for reservation admin.
Introduce rental tariff.
Consider trailing buffer for "bookable now" calculation.
Fix wrong case for GraphQL password change mutation.
Call the matching synchronizer for different invoice types.
Add GraphQL mutation for changing password.
Extend billing export to include additional user fields.
Speed up retrieval of accessible reservations.
Speed up trip segment admin.
Update meta payment status correctly.
Introduce trailing buffers for reservations.
Speed up SQL queries for accessible reservations.
Fix Debitoor sync issue.
On meta payment error update state correctly.
Highlight default payment method.
Notify organization admins when payment fails.
Add support for British pound.
Allow deactivating sharing groups per site configuration.
Fix meta payment workflow transition error.
Re-add missing invoice run export.
Display of miles can now be configured.
Fuel level for combustion engine vehicles.
Display payment method in user overview.
Credit card payment delay is configurable now.
Add field "internal note" for payment.
Allow multiple Stripe configurations.
In invoice run admin, show link to invoices.
Credit card payment: use idempotency keys to ensure that actions are only executed once.
Display Stripe fees in admin interface.
For SEPA exports, skip already paid invoices.
Make vehicle cost calculator work with Stripe.
Check general terms and conditions on signup.
Add Debitoor payment terms configuration option.
Allow searching for users’ phone numbers in admin.
Add allowed payment methods option for site configuration.
Credit card payment: Stripe invoice per reservation.
Increase limit to allow invoice run generation.
Django 3.2.12 security update.
Credit card payment improvements.
VVV API: better handling of users with same email addresses.
Enable accreditation by default.
Handle duplicate chip IDs gracefully.
App version 3.3.40 "In the zone".
Generate sample data for virtual Smartcar vehicles.
Improve credit card payment UX.
Re-enable leaflet map in vehicle overview.
Charge monthly payments via Stripe.
Prevent regular users to change their username / email in the profile view.
Restrict password reset token validity to 30 minutes.
Invalidate JWT tokens on password change.
Consider electric vehicle data on "central lock changed" event.
Re-add vehicle tab for sharing group admin view.
Add StripeInvoice.
Sort invoice items by reservation start.
Fix calculation of billable end.
Extend human-readable Convadis errors.
Prevent invoice item creation when no invoicing party is set.
Django security update 3.2.11
Extend VVV API to improve logging and allow empty driver’s licenses.
Enhance ReservationCredit card payment workflow: shift invoice items to regular invoice run.
Handle "Ignition on" ValidationError correctly.
Serialize creating invoices for the same payer.
Introduce admin actions for user pseudonymization.
Add admin views for Stripe payment transactions.
Django security update 3.2.10.
Allow admin users to manually enter reservation mileage.
Provide total amount for reservations via GraphQL.
Make INVERS push queue listener more robust.
Upgrade to Celery version 5.
Enforce account for INVERS devices.Enforce account for INVERS devices.
Enhance ReservationClearingManager: create payment transaction objects.
Adapt wording in signup notification.
Ensure that proper language is activated when sending notifications.
Fix admin reservation history.
Support multiple INVERS accounts.
Attach invoice data in CSV format.
Deprecate edit=Force
, instead use reservation workflow transitions.
Extend GraphQL node with field billingData
for reservations.
JWT tokens automatically expire after 14 days.
Fix GraphQL update_default_payment
error.
Use organization’s language for R.ACCESS admin messages
Credit card payment: add models.
Introduce virtual invoice runs.
Immediately create invoice items on reservation close.
Introduce tool to compress images.
Speed up reservation admin.
Reintroduce admin statistics.
Add additional search fields for accreditation admin.
Fix error when setting permitted organizations in SiteConfiguration admin.
Compress uploaded files: driver’s license, avatar.
Synchronize payer’s name including name addition.
Automatically confirm terms and conditions on signup confirmation.
Add Stripe customer portal session and enhance models
Improve reservation admin’s bulk_delete.
Convadis: handle ambiguous date times gracefully.
Allow admin access to VVV objects.
Show organization for Payer objects.
GraphQL: make Vehicle.images
and Vehicle.reservations
required.
Allow admin access to VVV objects.
Show organization for Payer objects.
GraphQL: make Vehicle.images
and Vehicle.reservations
required.
Translate SwissPass message "Card ID not found".
Add filter for inactive vehicles in admin.
Allow duplicate chip card RFID.
GraphQL API: link SwissPass errors to specific fields.
Allow adding geodata entries via admin interface.
VVV API: improve logging.
Raise PermissionDenied when role undefined in admin.
Fix error when adding new user in admin interface.
Store complete electric vehicle record (state of charge, plugged in, charging) for INVERS CloudBoxxes.
SwissPass integration: add logging.
VVV API: add fields.
Enhance SignupData admin.
Catch errors for disconnected CBoxes.
Display AccreditationTariffPackageAssigment in admin.
VVV API: do case-insensitive user lookup.
Extend GraphQL API: return total duration of queried reservations.
SwissPass integration: import chip card.
Display zone area in admin properly.
Improve performance of admin 🚀.
Improve object recovery performance.
Improve SEPA XML export: generate a separate file for each method.
INVERS: update state of charge on "immobilizer changed" event.
SEPA XML export.
In reservation admin display real start and end with seconds.
Display driver’s license in user overview.
Fix avatar dimensions in user overview.
App version 3.3.38 "Handle opened reservations".
Enhance site configuration: define if accreditation / which sharing groups are available.
Extend Monitoring REST API.
Admin: allow vehicle search by additional parameters, e.g. VIN.
Prevent that opened reservations in the past can be deleted.
Allow org admins to manage sharing groups’ researchers.
Improve data security for admin overviews.
Extend REST Monitoring API: add user endpoint.
Pseudonymize users: set state to one of the following values: INACTIVE, PENDING, ACTIVE, PSEUDONYMIZED.
Vehicle overview: display future reservations in ascending order.
App Version 3.3.37 "Confirmation".
Automatically delete inactive users (GDPR).
Pseudonymize users (GDPR).
Improve INVERS device admin form.
Prevent membership requests when user has not yet confirmed registration via email.
Access to signup data for admin users.
Improve email message when users unsubscribe (VVV API).
Prevent that GraphQL mutation confirmRegistration runs in parallel for the same user.
Fix image display for vehicle admin overview.
GraphQL: only provide sharing groups with admission mode ACCREDITATION.
Allow adding memberships and changing accreditation status for org admins.
Automatically set payer for tariff package in digital onboarding.
Enhance vehicle admin overview: skip None values and display mileage and most recent state of charge values.
GraphQL: tariff package selection.
Vehicle status overview in admin interface.
VVV API 1.0.0-rc1.
GraphQL: add fields username, zones to AccountNode.
SEPA: make BIC field optional.
Customized translations now support Markdown format.
Prevent error for accreditor users when calling reservation admin.
Extend VVV synchronizers.
Digital onboarding: add additional tariff options text.
Display QR code for I LOCK IT devices.
GraphQL: add tariff package selection to digital onboarding.
Upgrade to Django 3.2.4.
Signup: skip payment data for some orgs.
Improve low battery notification.
Show reservation overview to group admins.
ConvadisVehicleAdmin works for all user roles now.
Upgrade to Django 3.2.x.
Show action icon for viewable objects.
Turn off umbrella feature if user has next reservation within the next 15 minutes.
In reservation admin ignore proxied user.
When creating action for INVERS without connecting it to a reservation, correctly update status.
Prepare for Python 3.9.x.
Update requirements.
Ignore Convadis callbacks that would change the final jobstatus.
Re-add missing header to reservation export.
App version 3.3.36 "Basque".
Style hijack release button.
Set initial I LOCK IT counter to 1.
Display reservation tags in admin interface.
Massive speed up of unit tests due to parallel processes.
System checks for admin configuration.
Raw ID fields display labels again.
Set proper background color on login / logout / password reset.
App version 3.3.35 "Instant booking".
Add insurance option for reservations.
Add accreditations to user view.
Improve AdminConfiguration.
Reorder fields in admin: reduce fieldsets.
Add automatic sorting by actions_and_id field.
Redirect to new signup when next generation signup activated.
Driver’s license back returns HTTP status 404.
Restore history button in admin.
Allow selecting vehicles in billing cluster.
Fix wrong dimensions of user avatar.
Add insurance tags for reservations.
Copy invitation link to clipboard.
Introduce AdminConfiguration.
In admin interface add link to Desktop App.
Role Accreditor now sees user admin.
Fix errors with field querysets.
New Jazzmin-based admin interface.
Upgrade to Django 2.2.20.
Extend Marketplace REST API.
GraphQL mutation uploadDriversLicense now accepts PDF files.
Add Basque translations.
Book but don’t send zero-total invoices.
Billing package: Add field for VAT exemption.
Prevent superusers from accidentally deleting on-board unit objects.
Add translations for exceptions of digital onboarding GraphQL calls.
GraphQL mutations now support additional metadata about the client.
Digital onboarding: add SignupData admin.
Digital onboarding: add salutation to user model.
GraphQL query for checking if user has access to any vehicle.
Enhance logging
Allow more than one tariff package assignment per membership.
GraphQL: user query with additional fields date of birth and gender.
GraphQL: deliver analytics settings.
Store fuel level for combustion engine vehicles with INVERS.
Another performance tweak for the Umbrella feature.
Make login via email case insensitive.
Improve GraphQL logging: better style, remove obsolete warnings.
Validate the I LOCK IT Bluetooth advertising name.
Speed up slow queries: add database index, add additional filter to umbrella feature query.
Extend user data export with field date of birth.
Display field default_purpose_only
in admin.
Add vehicle supporters on GraphQL query.
Harden GraphQL implementation: validate username, update field address.
Allow more than 1000 forms for admin inlines.
Convadis: Generously process non-validating ReceiveTripdata messages.
Raise proper validation error on duplicate payer.
Speed up vehicle admin by optimizing queryset.
App version 3.3.34 "Caruso support".
Digital onboarding user registration mode.
Additional GraphQL queries for digital onboarding.
Update to Django 2.2.19.
Update dependencies.
Additional GraphQL mutations for digital onboarding.
Groundwork for public transport API.
Update to Django 2.2.18.
Update dependencies.
Improve display of JSON widget.
Repair SEPA CSV export.
Add support for Debitoor credit notes.
Gray out accreditation tariff assignments for non-admin users.
Extend GraphQL digital onboarding calls.
Prevent missing email address errors by declaring email, first name, last name as required fields when creating new users via the admin interface.
Additional GraphQL digital onboarding calls.
Grant access to protected files using encrypted JWT tokens.
Display sleeping mode countdown in R.ACCESS vehicle status.
Display errors / timeouts of actions of last 7 days in R.ACCESS vehicle status.
Billing module: fix wrong display of payout rate in reimbursements.
Repair track_invers_action
.
Improve error handling of InversAction by catching generic exceptions.
Handle trip segment edge case by introducing Reservation.tags
.
Proper validation of user roles when editing users.
Don’t allow umbrella feature actions for automatically closed reservations.
Add granular user data visibility options to sharing groups: NOTHING, CONTACT, BASIC.
Create sane data for virtual Smartcar vehicles.
Add admin actions for INVERS and Smartcar.
Display support hotline in international format.
INVERS: Add some magic to chip card reader workflow to improve usability.
I LOCK IT: allow org admins to edit field key
.
INVERS: add event central_lock_command_without_change
to fallback recovery procedure .
INVERS: activate fallback channels to make API calls more robust.
Add GraphQL file upload mutation: uploadAvatar.
Add several digital onboarding GraphQL calls.
Prevent error when ordering by vehicle in vehicle status view.
When calling billing actions, round up estimated completion time calls to next minute.
Consider INVERS event ev_quick_charge_changed
.
When accessing reservation via chip card on INVERS devices, automatically close previous protected reservation.
Update Smartcar action even when no reservation is associated with it.
Fix "Book and send draft invoices" action.
Level 1 Support Tool: Allow admins to initiate Smartcar actions.
Log error when Smartcar vehicle is disconnected.
Automatically clear obsolete JWT tokens using Celery beat.
Ignore Convadis alarms for vehicles that don’t (yet) exist.
Fix admin action for disconnecting Smartcar vehicle.
Fix GraphQL error when username is changed while user is still logged in.
Harden Debitoor integration by adding delays between API calls.
Add active flag to organization.
Make reservation start / end read-only for protected / closed reservations
Make Smartcar integration more robust.
Prevent parallel processes fetching Smartcar tokens.
Add digital onboarding GraphQL calls.
INVERS: prevent "Umbrella-locking" vehicle when keyfob is out.
Convadis: Ignore SBP64 messages.
Pre-select invoicing party when only one exists.
Extend reservation data export with user ID and creation date.
Properly consider net vs. gross for reservation deductible option for billing packages.
Case-insensitive chip card lookup in Convadis callbacks.
Add reservation deductible option for billing packages.
Automatically close opened reservations for selected sharing groups.
Extend vehicle status admin view.
INVERS: prevent lock action when vehicle ignition is on.
Add Level 1 support view (Technology Preview).
Improve Digital Onboarding GraphQL calls.
Make Convadis error messages more readable.
Log errors when Convadis XML does not stick to the schema.
Reset Smartcar vehicle status to OK when successfully reconnected.
Smartcar: provide disconnect action in admin interface.
Digital Onboarding GraphQL calls: registerUser
, updateUserBasicData
.
Handle Smartcar’s VOA_000 error.
Send INVERS API calls with fallback deactivated to prevent unexpected results.
Improve mail bounce handler.
Don’t try to fetch electric vehicle data for Smartcar combustion engine vehicles.
Allow org admins to manage I LOCK IT devices.
Smartcar Connect: handle case when vehicle owner denies access.
Fail gracefully when Smartcar Batch API call returns error 500.
Add mail bounce handler.
Smartcar invitation link: allow multiple vehicles to be stored.
Add handler for INVERS fuel_level events.
Fix rare CardinalityViolation error in deprecated billing export.
Improve GraphQL API error messages.
Extend branding options.
Prevent error when users have no access to vehicles.
Fix Vehicle queryset when annotating labels.
Add LimitedSharingGroup GraphQL query.
Improve GraphQL error reporting and introduce extensions.code
Don’t allow blank spaces in passwords.
Smartcar invitation link: Add country flag.
Extend GraphQL ReservationClosingNode with all sorts of start & end values: billed start/end, displayed start/end, booked start/end
Fix GraphQL ActionStatus for closed Convadis reservations.
Introduce Vehicle.short_message field.
Reservation overdrawn messages are delayed five minutes.
GraphQL API returns reservations for which the umbrella feature is available.
Fix INVERS RFID chip card synchronization.
Improve logging.
Add duration to actions.
Fix Convadis umbrella feature functionality.
Make ical export more robust
Improve logging.
R.ACCESS admin: Display errors as HTML. Add age filter to improve performance.
Improve stability of INVERS push queue listener.
Prevent error in admin when deleted reservation is reopened and collides with other reservations.
Extend accreditation Excel export.
Make INVERS push queue listener more robust.
Adapt to current INVERS Swagger file.
Make admin back end for on-board units more consistent: filters, clickable links, etc.
Fix error for signup activation with invalid hash code.
When on-boarding the accreditation sites are now listed.
Automatically close unused reservations for I LOCK IT an Smartcar devices.
Add geofence violation checks for I LOCK IT devices.
Make book and send action more user friendly in billing module.
Fix Bad Request (400) when having too many invoice items.
Smartcar.com integration Beta 2: Add Smartcar invitation.
Smartcar.com integration: add automatic data purge and enhance logging.
Smartcar.com integration Beta 1.
Admin interface: Add on-board unit integrity checks in admin.
Consider reference date in billing module.
Configure invoice date mode per invoicing party.
Automatically close unused reservations for on-board unit INVERS.
Admin interface: Let organization admins choose unlabeled chip card in admin.
App Version 3.3.32 "Phone support".
Adapt chip card import tool.
Implement new trip fetching algorithm for Fink devices.
Admin interface: Allow workflow transition and date time change for reservations at the same time.
App Version 3.3.31 "Support phone"
Environment REST API: Return support hotline as nicely formatted international phone number.
.
Django security release: .
Upgrade to .
Upgrade to
Upgrade to
Upgrade to
Upgrade to .
Django Security Update:
Add Umbrella feature actions to GraphQL API.
Umbrella feature for chip cards: Add 30 seconds "cool down period" after reservation was closed to ensure that this feature is not activated by accident.
Introduce Umbrella feature for chip cards: Allow users to unlock / lock the vehicle after they have closed a reservation to grab a forgotten item using their chip cards.
Umbrella feature: Allow users to unlock / lock the vehicle after they have closed a reservation to grab a forgotten item.
: Security first!