
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)