Billig(e) Transaksjoner
Formål
Oppnå sporbarhet for alle økonomiske transaksjoner i billig, både for nettsalg og ved utsalgssted.
Ønsket er å ha en mer komplett log over alle aktiviteter, som refundering og endringer.
Med en slik log kan man enkelt (enklere?) lage views til f.eks. UKA slik at de kan få mer komplette økonomiske rapporter de er fornøyde med.
Samfundet har ikke registrert noe ønske om bedre økonomiske rapporter, men UKA har endel krav:
- Sporbarhet på hva en selger har foretatt av transaksjoner i en tidsperiode ("kasseoppgjørs-rapport")
- Rapport for transaksjoner utført av en selger grupper på MVA-kode¹ og UKEprosjekt².
- Mulighet for å avstemme bank-innskudd mot vare ut.
I og med at dette er et UKEproblem var tanken å fjerne mye av funksjonaliteten for å generere disse rapportene vekk fra billig, men at billig samler de nødvendige dataene for å lage de.
Problem med nåværende løsning
Løsningen som er i produksjon i dag er meget intrusiv og overkompleks.
Gammel-gammel løsning
Logger ikke hvem som refunderer.
Ingen sporbarhet ved endring av billetter, da timestamp og selger ligger på purchase nivå.
Ny løsning vil vi ha!
Logge all aktivitet mot ticket tabellen, med tid, selger og type transaksjon.
Man skal typisk kunne hente ut når en billett ble solgt, når den ble refundert og om det er en endring, hvilken billett som erstattet den.
Den tenkte løsningen er å opprette en ny tabell som holder på denne informasjonen.
Man kan muligens oppnå samme nivå med sporbarhet ved å flytte selger og salgstidspunkt fra purchase tabellen til ticket, samt å legge til 'refunded_by' på ticket. Utvalget ser dette som en dårligere løsning, da det blir mindre ryddig.
Transaksjonstyper
Følgende transaksjoner trenger vi (de jeg kom på nå iallefall):
SALE | For salg, når en betaling skjer |
REFUND | Refundering |
RESERVATION | Reservasjon av en billett, etterfølges av en SALE når billetten blir betalt. |
Påbegynt arbeid
transaction_log (utkast)
CREATE TABLE transaction_log ( transaction_log serial NOT NULL PRIMARY KEY, transaction_time timestamp NOT NULL DEFAULT NOW(), ticket integer NOT NULL REFERENCES ticket, transaction_type integer NOT NULL REFERENCES transaction_type, seller varchar );
seller er enten brukernavnet til selgeren eller NULL dersom det er nettsalg
Kodeendringer
- create_purchase (plpgsql) må inserte en rad i transaction_log per billett (sale)
- ticket_exchage (plpgsql) må inserte to rader per billett (en refund og en sale)
- do-refund-ticket.pl må inserte en rad per billett (refund)
- abort_purchase i Billig.pm må inserte en rad per billett (refund)
Eide knoter ned ting for å huske det
- Nettsalg
- Salg på stands
- Reservasjoner
transaction_type | penger inn/ut? | wut? |
---|---|---|
NORMAL_SALE | Inn | Salg på stand |
NORMAL_REFUND | Ut | Refundering på stand |
NORMAL_CHANGE | ? | Endring av billett, prisklasse |
NET_SALE | 0 | Salg på nett |
NET_TIMEOUT | 0 | Nettsalg timet ut |
NET_PAID | Inn | Payex sa 202 OK! |
RESERVATION_SALE | 0 | Reservasjon av billett |
RESERVATION_PAID | Inn | Reservasjonen ble betalt |
RESERVATION_REFUND | 0 | Refundering av en reservasjon |
RESERVATION_CHANGE | ? | Endring av reservasjon |
¹: MVA-kode var i 09 en hardkodet liste i rapporteringscriptet, var en tre arrangementer som hadde en ikke-standard kode
²: UKEprosjekt er en nummerisk kode på en gruppe arrangementer. Revyen er typisk kode 1, teltartister en annen osv osv
Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2010-10-05 20:49 | Revisjon: 8 (historie, blame) | Totalt: 1905 kB | Rediger