Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow to revert check-ins #11

Open
pc-coholic opened this issue Apr 3, 2017 · 6 comments
Open

Allow to revert check-ins #11

pc-coholic opened this issue Apr 3, 2017 · 6 comments

Comments

@pc-coholic
Copy link
Member

Add a button to the GUI that removes the checkin-mark on a position after scanning a barcode.

Useful when you accidentally scanned someone's Merch-voucher instead of the admission-voucher.

@jfwiebe
Copy link
Contributor

jfwiebe commented Apr 4, 2017

So you mean, you check a "reverse" checkbox and every code that is scanned will become valid and usable again?

@raphaelm
Copy link
Member

raphaelm commented Apr 4, 2017

Sounds useful. I would however implement it as a butten "make valid again" that appears after it has been scanned, instead of having a persistent checkbox that someone might forget to uncheck again.

@pc-coholic
Copy link
Member Author

Exactly what rami is saying: Just an additional button after a ticket has been scanned.

@raphaelm raphaelm changed the title Allow to "checkout" tickets Allow to revert check-ins May 3, 2017
@raphaelm
Copy link
Member

raphaelm commented May 6, 2017

Bad news: After #15 is landed (probably today) this will get harder as reverting actions makes asynchronous APIs complicated…

@pc-coholic
Copy link
Member Author

I was thinking about this... Of course, the asynchronous checkin mode makes things a little more complicated... But I'm not really sure, if that's really an issue...

The usecase for this feature is (at least for me) to revert an accidental check in of a ticket. So it will likely occur within a few seconds or minutes and probably on the same device that I used to do the original check in.

Of course we may run into race-conditions if the ticket is scanned on different devices - but that's already the case when async-mode.

My proposal would be to extend the TicketCheckProvider with an revertCheckin-functionality which either calls a corresponding API-call (for OnlineCheckProvider) or sets the ticket to unused and inserts a QueuedCheckOut (for the AsyncCheckProvider).

Generally speaking, perhaps we should display a warning-message when activating async-mode to explain what might cause problems...

Or - and that would be even easier: Only implement this whole thing just for the OnlineCheckProvider. It is my understanding, that this one should also be the preferred way to use pretixdroid...

@raphaelm
Copy link
Member

raphaelm commented Jun 8, 2017

The usecase for this feature is (at least for me) to revert an accidental check in of a ticket. So it will likely occur within a few seconds or minutes and probably on the same device that I used to do the original check in.

  1. We have no guarantee that it is not yet synced
  2. Nope, that's not the only usecase. People asked me about this feature because they want to scan tickets at both entrance and exit of the building to keep track of who is inside (and how many).

Of course we may run into race-conditions if the ticket is scanned on different devices - but that's already the case when async-mode.

There's a difference here: Currently, race-conditions are not relevant for the final state of the order. If we have two devices, A and B, and the internet is down, both scan it and mark it as valid, the server has an easy job merging the uploads: That's a double-scanned ticket, it doesn't matter which device scanned first.

If we have this feature, especially in the use-case "scanning at every entry and exit" outlined above becomes more difficult, because the scan order starts to matter and we can't really rely on the local time of the devices being correct. Also, we'd need to construct the UI in a way that allows you to "revert a scan" even if your device thinks it hasn't been scanned before.

My proposal would be to extend the TicketCheckProvider with an revertCheckin-functionality which either calls a corresponding API-call (for OnlineCheckProvider) or sets the ticket to unused and inserts a QueuedCheckOut (for the AsyncCheckProvider).

Yep.

Generally speaking, perhaps we should display a warning-message when activating async-mode to explain what might cause problems...

That's already the case.

Or - and that would be even easier: Only implement this whole thing just for the OnlineCheckProvider. It is my understanding, that this one should also be the preferred way to use pretixdroid...

Not sure, the async mode is a very valid use case, as it not only helps with missing internet connection but is a very efficient way to handle slow internet connections and speed up the process, especially if you expect very little dishonest participants.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants