Katrineholms faktureringsrutin
Vår faktureringsrutin är en egen variant på Bibliotek Mellansjös rutin, Fakturering. Det mesta har vi lånat därifrån när det gäller kodning till rapporterna.
Processen är uppbyggd på tre rapporter som körs efter varandra.
Kontrollista
Först kör vi rapporten Kontrollista. Där får vi fram alla exemplar som är mer än 14 dagar sena. Innan rapporten körs avgränsar man på låntagarkategori, detta för att vi enbart fakturerar vuxna låntagare.
Finns det böcker/låntagare som av någon orsak inte ska faktureras? Klicka på bokstreckkoden och ändra Förlorat-status till Försenad/Long overdue.
Koderna skapas under Administration > Auktoriserade värden > LOST.
Ändra resterande exemplar till status På räkning.
Klicka på knappen Satsvis ändring längst upp i högra kolumnen. Det kommer upp en ny sida.
Ganska långt ned på sidan kommer möjligheten att Redigera exemplar.
Ändra Förlorad-status till På räkning. Spara längst ned på sidan. När exemplaren får status På räkning genereras en skuld på låntagaren motsvarande schablonpriset på boken. På så sätt blir låntagaren spärrad. När boken återlämnas försvinner skulden på själva boken, och det som återstår är övertidsavgiften.
På grund av att brister i kunnande i SQL finns det kvar information om ersättningspris kontra schablonpris när man kör rapporten. Detta är inget vi lägger någon vikt vid då vi alltid fakturerar schablonpriset även om ersättningspriset är lägre. Se Bibliotek Mellansjös sida Fakturering för mer information om hur de fälten kan användas.
SELECT CONCAT(branches.branchname,'<br>', CASE WHEN items.ccode IS NULL THEN '--' ELSE items.ccode END,'<br>', CASE WHEN items.location IS NULL THEN '--' ELSE authorised_values.lib END,'<br>', items.itemcallnumber) AS Placering, CONCAT(CASE WHEN biblio.author IS NULL THEN '' ELSE biblio.author END,'<br>', biblio.title,'<br>', items.barcode) AS Bok, CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=', issues.borrowernumber, '\">', CONCAT( borrowers.firstname, ' ', borrowers.surname, ' ', borrowers.cardnumber ), '</a>' ) AS "Låntagare", borrowers.categorycode AS Låntagarkategori, issues.date_due AS förfallodatum, items.itype AS exemplartyp, CASE WHEN items.location in ('66') THEN '50.00 kronor' WHEN items.itype IN ('BARNMEDIA') THEN '150.00 kronor' WHEN items.itype IN ('BOK','KLASSRUM','KLASSUPP','KOMBI') THEN '300.00 kronor' WHEN items.itype IN ('FJÄRRLÅN') THEN '800.00 kronor' WHEN items.itype IN ('SPRÅKKURS') THEN '800.00 kronor' WHEN items.itype IN ('FILM') THEN '600.00 kronor' WHEN items.itype IN ('MUSIK') THEN '250.00 kronor' WHEN items.itype IN ('TIDSKRIFT') THEN '50.00 kronor' WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOKMP3') THEN '400.00 kronor' ELSE ' 999.00 kronor' END AS 'Schablonpris', items.price AS 'Inköpspris', CASE WHEN items.price / (CASE WHEN items.location in ('66') THEN '50.00 kronor' WHEN items.itype IN ('BARNMEDIA') THEN '150.00 kronor' WHEN items.itype IN ('BOK','KLASSRUM','KLASSUPP','KOMBI') THEN '300.00 kronor' WHEN items.itype IN ('FJÄRRLÅN') THEN '800.00 kronor' WHEN items.itype IN ('SPRÅKKURS') THEN '800.00 kronor' WHEN items.itype IN ('FILM') THEN '600.00 kronor' WHEN items.itype IN ('MUSIK') THEN '250.00 kronor' WHEN items.itype IN ('TIDSKRIFT') THEN '50.00 kronor' WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOKMP3') THEN '400.00 kronor' ELSE ' 999.00 kronor' END) > '2' THEN 'Mer än dubbla schablonpriset' WHEN items.price / (CASE WHEN items.location in ('66') THEN '50.00 kronor' WHEN items.itype IN ('BARNMEDIA') THEN '150.00 kronor' WHEN items.itype IN ('BOK','KLASSRUM','KLASSUPP','KOMBI') THEN '300.00 kronor' WHEN items.itype IN ('FJÄRRLÅN') THEN '800.00 kronor' WHEN items.itype IN ('SPRÅKKURS') THEN '800.00 kronor' WHEN items.itype IN ('FILM') THEN '600.00 kronor' WHEN items.itype IN ('MUSIK') THEN '250.00 kronor' WHEN items.itype IN ('TIDSKRIFT') THEN '50.00 kronor' WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOKMP3') THEN '400.00 kronor' ELSE ' 999.00 kronor' END) < '0.5' THEN 'Mindre än halva schablonpriset' ELSE '' END AS 'Större avvikelse?' , CONCAT('<a href=\"/cgi-bin/koha/cataloguing/additem.pl?op=edititem&biblionumber=', items.biblionumber, '&itemnumber=',items.itemnumber,'\" target="_blank">', CASE WHEN items.replacementprice IS NULL THEN '--' ELSE items.replacementprice END, '</a>' ) AS 'Annat pris än schablon?', CONCAT('<a href=\"/cgi-bin/koha/catalogue/moredetail.pl?itemnumber=', items.itemnumber, '&biblionumber=',biblio.biblionumber,'\" target="_blank">', items.barcode, '</a>' ) AS 'Sätt Försenad/Long overdue på det som inte ska faktureras.', items.itemnumber FROM borrowers LEFT JOIN issues ON (borrowers.borrowernumber=issues.borrowernumber) LEFT JOIN items ON (issues.itemnumber=items.itemnumber) LEFT JOIN authorised_values ON (items.location=authorised_values.authorised_value) LEFT JOIN biblio ON (items.biblionumber=biblio.biblionumber) LEFT JOIN branches ON (items.homebranch=branches.branchcode) WHERE (TO_DAYS(curdate())-TO_DAYS(date_due)) > '14' AND items.itemlost !=1 AND items.itemlost !=2 AND items.itemlost !=3 AND items.itemlost !=4 AND items.itemlost !=5 AND issues.branchcode = <<Utlånande bibliotek|branches>> AND borrowers.categorycode = <<Låntagarkategori|categorycode>> ORDER BY borrowers.categorycode, borrowers.cardnumber ASC, items.homebranch ASC,items.ccode ASC, items.location ASC, items.itemcallnumber ASC, biblio.author ASC,biblio.title ASC
Faktureringsunderlag
Nästa steg är att köra rapporten där du får fram fakturaunderlaget. Klicka på Skriv ut faktura till höger om låntagarens namn. Om samma låntagare får faktura på mer än en bok så räcker det med att klicka på en av länkarna, all böcker samlas på en faktura.
Har samma låntagare mer än åtta böcker på räkning skrivs bara de åtta första titlarna ut. Fakturaunderlagen skrivs ut och lämnas till ekonomiassistenten. Titlarna reserveras till också till hen. Detta för att de fakturerade böckerna ska fångas in vid återlämning. När boken återlämnas tar vi bort reservationen och mailar ekonomi så hen kan makulera fakturan.
SELECT biblio.author AS Författare, biblio.title AS Titel, items.barcode AS Streckkod, issues.branchcode AS 'utlånande bibliotek', items.itemlost_on AS 'Fakturerad den', lant.cardnumber AS 'Lånad av streckkod', lant.surname AS 'Lånad av efternamn', lant.firstname AS 'Lånad av förnamn', CASE WHEN SUBSTRING(items.itemlost_on,1,10)=CURDATE() THEN CONCAT('<a href=\"/cgi-bin/koha/reports/guided_reports.pl?reports=175&phase=Run+this+report¶m_name=Borrowernumber&sql_params=',lant.borrowernumber,'\" target="_blank">Skriv ut faktura</a>' ) ELSE '' END as 'Skriv ut faktura', CONCAT('<a href=\"/cgi-bin/koha/members/moremember.pl?borrowernumber=', lant.borrowernumber, '#reldebarments','\" target="_blank">', CASE WHEN borrower_debarments.comment IS NULL THEN '--' ELSE (SELECT GROUP_CONCAT( DISTINCT BlocksInnerDets.BlocksDetails SEPARATOR '</br>') FROM (SELECT blocksInner.comment AS BlocksDetails, blocksInner.borrowernumber FROM borrower_debarments blocksInner ) BlocksInnerDets WHERE BlocksInnerDets.borrowernumber = lant.borrowernumber) END, '</a>' ) AS 'Spärra låntagaren', CONCAT('<a href=\"/cgi-bin/koha/reserve/request.pl?biblionumber=', items.biblionumber, '&findborrower=', CASE WHEN issues.branchcode = 'BIESKOLA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'BJORKVIK' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'DUVEHOLM' THEN 'Karolina Rochling' WHEN issues.branchcode = 'FORSSJO' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'NAVERTORP' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'JULITA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'KATRINEHOL' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'NYHEM' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SANDBACK' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SKOGSBORG' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SKOLDINGE' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'kskv' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'STRANGSJO' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SODRA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'TALLAS' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'VALLA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'VASTRA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'OSTRA' THEN 'Fakturerade Böcker' ELSE '' END,'\" target="_blank">', CASE WHEN issues.branchcode = 'BIESKOLA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'BJORKVIK' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'DUVEHOLM' THEN 'Karolina Rochling' WHEN issues.branchcode = 'FORSSJO' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'NAVERTORP' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'KATRINEHOL' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'NYHEM' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SANDBACK' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SKOGSBORG' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SKOLDINGE' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'kskv' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'STRANGSJO' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'SODRA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'TALLAS' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'VALLA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'VASTRA' THEN 'Fakturerade Böcker' WHEN issues.branchcode = 'OSTRA' THEN 'Fakturerade Böcker' ELSE '' END, '</a>' ) AS 'Reservera för bevakning', qu.surname AS 'Reserverad av' FROM items LEFT JOIN reserves ON (items.itemnumber = reserves.itemnumber) LEFT JOIN issues ON (items.itemnumber = issues.itemnumber) LEFT JOIN biblio ON (items.biblionumber = biblio.biblionumber) LEFT JOIN borrowers lant ON (issues.borrowernumber = lant.borrowernumber) LEFT JOIN borrowers qu ON (reserves.borrowernumber = qu.borrowernumber) LEFT JOIN borrower_debarments ON (borrower_debarments.borrowernumber=lant.borrowernumber) WHERE items.itemlost = 1 AND issues.branchcode = <<Utlånande bibliotek|branches>> GROUP BY items.itemnumber ORDER BY SUBSTRING(items.itemlost_on,1,10) DESC,qu.cardnumber ASC, lant.borrowernumber DESC
Faktura
När man klickar på Skriv ut faktura så körs den här rapporten i en ny flik.
SELECT concat(CASE WHEN adressat.categorycode = 'BARN' THEN 'målsman för <br>' ELSE '' END, adressat.firstname, ' ', adressat.surname,'<br>', adressat.address,'<br>', adressat.address2,'<br>', adressat.zipcode,' ', adressat.city) AS Adress, p.attribute AS Personnummer FROM borrowers adressat LEFT JOIN issues ON issues.borrowernumber=adressat.borrowernumber LEFT JOIN items ON items.itemnumber=issues.itemnumber LEFT JOIN biblio ON (biblio.biblionumber=items.biblionumber) LEFT JOIN borrower_attributes p ON (adressat.borrowernumber=p.borrowernumber) WHERE items.itemlost = 1 AND adressat.borrowernumber = <<Borrowernumber>> AND SUBSTRING(items.itemlost_on,1,10) = CURDATE() UNION SELECT CASE WHEN COUNT(items.itemnumber) = '1' THEN '<b>En försenad bok</b>' ELSE CONCAT('<b>',COUNT(items.itemnumber),' försenade böcker</b>') END AS 'Lån', '<b>Summa att betala</b>' AS 'Summa att betala' FROM borrowers fakturerat LEFT JOIN issues ON issues.borrowernumber=fakturerat.borrowernumber LEFT JOIN items ON items.itemnumber=issues.itemnumber LEFT JOIN biblio ON (biblio.biblionumber=items.biblionumber) WHERE items.itemlost = 1 AND fakturerat.borrowernumber = <<Borrowernumber>> AND SUBSTRING(items.itemlost_on,1,10) = CURDATE() UNION SELECT CASE WHEN COUNT(items.itemnumber) > '8' THEN CONCAT(SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT biblio.title,' <br>streckkod: ',items.barcode,' <br>återlämningsdatum: ',items.onloan,' <br>pris: ',CASE WHEN items.replacementprice IS NOT NULL THEN CONCAT(items.replacementprice,' kronor') WHEN items.location IN ('66') THEN '50.00 kronor' WHEN items.location IN ('37') THEN '800.00 kronor' WHEN items.itype IN ('BARNMEDIA') THEN '150.00 kronor' WHEN items.itype IN ('FILM') THEN '600.00 kronor' WHEN items.itype IN ('FAKTAFILM') THEN '350.00 kronor' WHEN items.itype IN ('MUSIK') THEN '250.00 kronor' WHEN items.itype IN ('TIDSKRIFT') THEN '50.00 kronor' WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOK MP3') THEN '400.00 kronor' WHEN items.ccode IN ('VUXEN','MAG') THEN '300.00 kronor' WHEN items.ccode IN ('BARUNUNG') THEN '150.00 kronor' ELSE ' 999.00 kronor' END SEPARATOR '<p>'), '<p>', 8),'<p> och ytterligare ',COUNT(items.itemnumber) -8,' böcker, se ditt konto för fullständiga uppgifter') ELSE GROUP_CONCAT(DISTINCT biblio.title,' <br>streckkod: ',items.barcode,' <br>återlämningsdatum: ',items.onloan,' <br>pris: ',CASE WHEN items.replacementprice IS NOT NULL THEN CONCAT(items.replacementprice,' kronor') WHEN items.location IN ('66') THEN '50.00 kronor' WHEN items.location IN ('37') THEN '800.00 kronor' WHEN items.itype IN ('BARNMEDIA') THEN '150.00 kronor' WHEN items.itype IN ('FILM') THEN '600.00 kronor' WHEN items.itype IN ('FAKTAFILM') THEN '350.00 kronor' WHEN items.itype IN ('MUSIK') THEN '250.00 kronor' WHEN items.itype IN ('TIDSKRIFT') THEN '50.00 kronor' WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOK MP3') THEN '400.00 kronor' WHEN items.ccode IN ('VUXEN','MAG') THEN '300.00 kronor' WHEN items.ccode IN ('BARUNUNG') THEN '150.00 kronor' ELSE ' 999.00 kronor' END SEPARATOR '<p>') END , SUM(CASE WHEN items.replacementprice IS NOT NULL THEN items.replacementprice WHEN items.location IN ('66') THEN 50.00 WHEN items.location IN ('37') THEN 800.00 WHEN items.itype IN ('BARNMEDIA') THEN 150.00 WHEN items.itype IN ('FILM') THEN 600.00 WHEN items.itype IN ('FAKTAFILM') THEN 350.00 WHEN items.itype IN ('MUSIK') THEN 250.00 WHEN items.itype IN ('TIDSKRIFT') THEN 50.00 WHEN items.itype IN ('TAL','LJUDBOK','LJUDBOK CD','LJUDBOK MP3') THEN 400.00 WHEN items.ccode IN ('VUXEN','MAG') THEN 300.00 WHEN items.ccode IN ('BARUNUNG') THEN 150.00 ELSE 999.00 END) FROM borrowers fakturerat LEFT JOIN issues ON issues.borrowernumber=fakturerat.borrowernumber LEFT JOIN items ON items.itemnumber=issues.itemnumber LEFT JOIN biblio ON (biblio.biblionumber=items.biblionumber) WHERE items.itemlost = 1 AND fakturerat.borrowernumber = <<Borrowernumber>> AND SUBSTRING(items.itemlost_on,1,10) = CURDATE() UNION SELECT '<b>Lämna tillbaka boken/böckerna så fort som möjligt så slipper du betala den här fakturan</b>' AS 'One', '' AS 'Two'
Låntagare under 18
Vi fakturerar inte barn, och inte heller deras målsman, då det kan vara svårt att veta vem målsman är. Däremot använder vi kontrollistan för att hålla koll på låntagare under 18 som har försenade lån, för att manuellt kunna spärra deras konton.