Laskuotsikot -tauluun tallentuu laskun "yläosan tiedot". Tästä taulusta onkin näppärin tehdä kyselyitä:
Kysymys: Yrityksellämme on tavarakauppaa kotimaahan, EU maihin ja EU:n ulkopuolelle. Miten saan kirjanpitäjällemme tulostettua kuukauden laskutuksesta raportin, jossa on eriteltyinä laskutuittain kotimaan laskutus, tavarakauppa eu maihin ja vienti EU:n ulkopuolelle? Erityisesti minua askarruttaa, miten Asteri laskutuksesta saadaan eriteltyä EU maihin ja EU:n ulkopuolelle tapahtunut laskutus.
Vastaus: Voit eritellä verottoman laskutuksen joko merkitsemällä jokaiseen laskuun, onko kyseessä EU myynti tai vienti EU:n ulkopuolelle. Toinen vaihtoehto on merkitä asiakaskortistoon, laskutetaanko asiakasta EU myyntinä tai vientinä EU:n ulkopuolelle.
Tapa 1. Merkitse laskuun: Valitse laskun yläosan tiedoista jokin kenttä (viitteenne/viitteemme/toimitus tms.), johon merkitset aina laskua kirjoittaessasi, onko kyseessä myynti EU maihin tai vienti EU:n ulkopuolelle. Laskuta lasku verottomana (muuta tarvittaessa laskurivikohtainen alv% nollaksi). Esimerkiksi merkitse Viitteemme kenttään EU jos laskutat tavarakauppaa EU maahan, merkitse vienti jos laskutat vientiä EU:n ulkopuolelle.
Kysymys 1: | Alkupäivä |
Kysymys 2: | Loppupäivä |
SQL-kysely (eu-myynti) |
SELECT laskunnumero, päivämäärä as pvm, laskutusnimi as yritys , , loppusumma AS laskutettu FROM Laskuotsikot WHERE viittemme = 'EU' AND Cdate(päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') ORDER BY val(laskunnumero) |
SQL-kysely (vienti) |
SELECT laskunnumero, päivämäärä as pvm, laskutusnimi as yritys , loppusumma AS laskutettu FROM Laskuotsikot WHERE viitteemme = 'vienti' AND Cdate(päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') ORDER BY val(laskunnumero) |
Tapa 2: Merkitse asiakaskortistoon puhelinnumero kentään Alv-tunniste (VAT number)
Kysymys 1: | Alkupäivä |
Kysymys 2: | Loppupäivä |
SQL-kysely (eu-myynti) |
SELECT laskunnumero, päivämäärä as pvm, laskutusnimi as yritys , laskutuspuhelin as VATid, loppusumma AS laskutettu FROM Laskuotsikot WHERE laskutuspuhelin <> 'vienti' AND left(laskutuspuhelin,2) <> 'FI' AND laskutuspuhelin <> '' AND Cdate(päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') ORDER BY val(laskunnumero) |
SQL-kysely (vienti) |
SELECT laskunnumero, päivämäärä as pvm, laskutusnimi as yritys , laskutuspuhelin as VATid, loppusumma AS laskutettu FROM Laskuotsikot WHERE laskutuspuhelin = 'vienti' AND Cdate(päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') ORDER BY val(laskunnumero) |
Tapa 3. Merkitse asiakaskortistoon: Merkitse asiakaskortistoon puhelinnumerokenttään EU tai vienti sen mukaan, laskutetaanko asiakasta EU tavaramyynnnistä tai vientikaupasta. Merkitse EU -asiakkaiden arvonlisäverotunniste (VAT number) asiakaskortiston koodi kenttään. Laskuta laskut verottomina.
EU-myynnin saat tulostettua kyselyllä:
Kysymys 1: | Alkupäivä |
Kysymys 2: | Loppupäivä |
SQL-kysely |
SELECT laskunnumero, [laskun pvm] as pvm, [asiakkaan nimi] as yritys , (SELECT koodirivi from asiakkaat a IN 'c:\winls\samples\asiakas.wak' WHERE numero = asiakasnumero ) AS VATid, [laskutettu mk] AS laskutettu from Reskontra where [asiakkaan puhelin] = 'EU' AND Cdate([laskun pvm]) BETWEEN Datevalue('%1') AND datevalue('%2') order by val(laskunnumero) |
Vientimyynnin saat tulostettua muuttamalla kyselyyn where [asiakkaan puhelin] = 'EU' tilalle where [asiakkaan puhelin] = 'vienti'
Kysymys: Yrityksellämme on kotimaan kaupan lisäksi tavarakauppaa EU:n alueelle ja vientiä EU:n ulkopuolelle. Miten saan neljännesvuosittain tehtävää ALV:n yhteenvetoilmoitusta varten yhteenvedon verottajalle EU:n alueella tapahtuvan tavarakaupan valvontaa varten (tiedot lomaketta VEROH 9534 varten)
Vastaus: Tässä yksi konsti:
Ennen laskuttamista lisää asiakaskortistoon EU maan asiakkaan puhelinnumerokenttään VAT-tunniste (esim FI07054933 tai DE192876773) ja EU:n ulkopuolelle tapahtuvaa vientiä varten puhelinnumerokenttään teksti "vienti" (ilman lainausmerkkejä).
Tee seuraava kysely:
Kysymys 1: | Alkupäivämäärä |
Kysymys 2: | Loppupäivämäärä |
SQL-kysely |
SELECT a.numero , a.Nimi, a.puhelin AS VAT,left(a.puhelin,2) AS Maa,mid(a.puhelin,3) AS VATid, (select sum(b.Loppusumma) AS Laskutettu from Laskuotsikot b where Cdate(b.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') AND b.asiakasnumero = a.numero group by b.asiakasnumero) AS summa FROM asiakkaat a in '%91' WHERE a.numero IN ( SELECT c.asiakasnumero from Laskuotsikot c WHERE Cdate(c.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2')) AND a.puhelin <> "vienti" AND left(a.puhelin,2) <>"FI" |
Tämä kysely listaa asiakkaat osoitetietoineen, joita laskutettu yli annetulla summalla. Tiedot haetaan laskuotsikot taulusta (osoitetiedoiksi haetaan ne tiedot, jotka ovat laskuotsikot taulussa). Kyselyssä käytetään näppärästi niksiä, jossa MAX-funktion avulla saadaan haettua asiakkaan osoitetiedot.
Kysymys 1 : | Alkupäivä |
Kysymys 2: | Loppupäivä |
Kysymys 3: | Monellako eurolla ostaneet listataan |
SQL-lause |
SELECT a.asiakasnumero AS asno, max(a.Laskutusnimi) AS yritys, max(a.Laskutuslisänimi) AS lisänimi, max(a.Laskutusosoite) AS osoite, max(a.Laskutuspaikka) AS paikka, sum(a.loppusumma) AS laskutettu FROM laskuotsikot a WHERE Cdate(a.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') GROUP BY a.asiakasnumero HAVING sum(a.loppusumma) > %3 order by 6 DESC |
Tämä kysely kysyy listaa suurimmalla summalla laskutetuyt asiakkat annetulla aikavälillä. Asiakkaiden osoitetiedot haetaan laskuotsikoista (ne osoitetiedot, jotka tulostuivat laskuun)
Kysymys 1 : | Alkupäivä |
Kysymys 2: | Loppupäivä |
Kysymys 3: | Montako asiakasta listataan |
SQL-lause |
SELECT TOP %3 a.asiakasnumero AS asno, max(a.Laskutusnimi) AS yritys, max(a.Laskutuslisänimi) AS lisänimi, max(a.Laskutusosoite) AS osoite, max(a.Laskutuspaikka) AS paikka, sum(a.loppusumma) AS laskutettu FROM laskuotsikot a WHERE Cdate(a.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') GROUP BY a.asiakasnumero order by 6 DESC |
Tämä kysely listaa asiakkaat, joita laskutettu yli annetulla summalla (pelkän asiakkaan nimen):
Kysymys 1 : | Alkupäivä |
Kysymys 2: | Loppupäivä |
Kysymys 3: | Monellako eurolla ostaneet listataan |
SQL-lause |
SELECT a.laskutusnimi, sum(a.loppusumma) AS laskutettu from laskuotsikot a WHERE Cdate(a.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') GROUP BY a.laskutusnimi HAVING sum(a.loppusumma) > %3 |
Tämä kysely listaa asiakaskortistossa olevat asiakkaiden osoitetiedot esim. liikelahjojen postitusta varten:
Kysymys 1 : | Alkupäivä |
Kysymys 2: | Loppupäivä |
Kysymys 3: | Monellako eurolla ostaneet listataan |
SQL-lause |
SELECT b.nimi, b.lisänimi, b.osoite, b.paikka FROM asiakkaat b IN '%91' WHERE b.numero IN (select a.asiakasnumero from laskuotsikot a WHERE Cdate(a.päivämäärä) BETWEEN Datevalue('%1') AND datevalue('%2') GROUP BY a.asiakasnumero HAVING sum(a.loppusumma) > %3) |
Seuraavassa on muutamia keskeneräisiä kyselyitä.
Tässä esimerkissä eritellään EU, vienti eu:n ulkopuolelle ja kotimaan laskutus yhdessä tulosteessa. Tämä on kuitenkin vielä keskeneräinen kysely: siitä puuttuvat päivämäärärajaukset:
select laskunnumero AS lasku , päivämäärä AS pvm , Laskutusnimi AS yritys, (SELECT a.koodirivi from asiakkaat a IN '%91' WHERE a.numero = asiakasnumero ) AS VATid , (SELECT a.puhelin from asiakkaat a IN '%91' WHERE a.numero = asiakasnumero ) AS eu , iif (eu = 'EU' , loppusumma , 0 ) as eusumma, iif (eu = 'vienti' , loppusumma , 0 ) as vientisumma, iif (eu <> 'vienti' AND eu <> 'EU' , loppusumma , 0 ) as suomisumma, (SELECT [Kanta 1: peruste] from [ALV-Erittely] where laskuotsikot.laskuntunniste = [ALV-Erittely].laskuntunniste) AS alvperuste, (SELECT [Kanta 1: vero] from [ALV-Erittely] where laskuotsikot.laskuntunniste = [ALV-Erittely].laskuntunniste) AS alv, loppusumma from laskuotsikot order by val(laskunnumero)