Vollständige Liste vorhandener BDEs
Top Kunden im Zeitraum X
Name: Top Kunden im Zeitraum X
Beschreibung: Identifikation der umsatzbesten Kunden in frei wählbarem Zeitraum.
Zusätzlich kann die Anzahl der ausgegebenen Kunden limitiert werden.
SQL-Abfrage:
SELECT
customer.customernumber AS "Kundennummer",
customer.name AS "Kundenname",
total AS "Betrag"
FROM customer
INNER JOIN (
SELECT sum(netamount) AS total, customer_id
FROM ar
WHERE NOT ar.storno
AND ar.datepaid BETWEEN <%Anfangsdatum%> AND <%Endddatum%>
GROUP BY customer_id
) ar ON ar.customer_id=customer.id
ORDER BY total DESC
LIMIT <%Limitierung%>
Abfrageparameter:
- Anfangsdatum:
- Typ: Datum
- Beschreibung: Beginn der gewünschten Zeitspanne
- Standardwert: Kein Standardwert
- Enddatum:
- Typ: Datum
- Beschreibung: Ende der gewünschten Zeitspanne
- Standardwert: Kein Standardwert
- Limitierung:
- Typ: Nummer
- Beschreibung: Limitierung der Anzahl der angezeigten Kunden
- Standardwert: Kein Standardwert
Inaktive Kunden
Name: Inaktive Kunden
Beschreibung: Identifikation von inaktiven Kunden.
Ab einem gewählten Datum wird geprüft, ob es Rechnungen für einen Kunden gibt.
Falls nicht, werden diese aufgelistet, nach Nettobetrag sortiert.
SQL-Abfrage:
SELECT customernumber "Kundennummer", name AS "Kundenname", invnumber AS "Rechnungsnummer", transdate AS "Rechnungsdatum", netamount AS "Nettobetrag"
FROM customer
LEFT JOIN (
SELECT ar.customer_id, ar.invnumber, ar.transdate, ar.netamount
FROM ar
INNER JOIN (
SELECT max(id) AS maxid, customer_id
FROM ar AS ar1
WHERE transdate = (SELECT max(transdate) AS maxtrans FROM ar AS ar2 WHERE ar1.customer_id = ar2.customer_id)
GROUP BY customer_id) maxAR
ON ar.customer_id = maxAR.customer_id
WHERE ar.id = maxAR.maxid
AND ar.customer_id NOT IN (
SELECT distinct customer_id FROM ar WHERE transdate >= <%Zeitpunkt%>)) AS max_inv
ON max_inv.customer_id = customer.id
WHERE max_inv.invnumber IS NOT null
ORDER BY netamount DESC
Abfrageparameter:
- Zeitpunkt:
- Typ: Datum
- Beschreibung: Zeitpunkt ab dem der Kunde auf Inaktivität geprüft wird
- Standardwert: Kein Standardwert
- Typ: Datum
Aktive Kunden mit zugehöriger Lieferbedingung
Name: Aktive Kunden mit zugehöriger Lieferbedingung
Beschreibung: -
SQL-Abfrage:
SELECT
customer.customernumber AS "Kundennummer",
customer.name AS "Kundenname",
dt.description AS "Lieferbedingung"
-- total AS "Betrag"
FROM customer
INNER JOIN (
SELECT sum(netamount) AS total, customer_id
FROM ar
WHERE NOT ar.storno
AND ar.datepaid BETWEEN <%Anfangsdatum%> AND <%Endddatum%>
GROUP BY customer_id
) ar ON ar.customer_id=customer.id
JOIN delivery_terms dt ON customer.delivery_term_id = dt.id
-- ORDER BY total DESC;
Abfrageparameter:
- Anfangsdatum:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Enddatum:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
Kundenumsätze nach Vertreter
Name: Kundenumsätze nach Vertreter
Beschreibung: Ausgabe von Umsätzen (enthalten auch nicht-provisionierbare Umsätze), Einkaufswerten und Marge je Kunde für einen bestimmten Zeitraum und Vertreter
SQL-Abfrage:
SELECT customer.customernumber as Kundennummer, customer.name as Name, ROUND(sales,2) as Umsatz, ROUND(sales-margin,2) as Einkaufswert, ROUND(margin,2) as Marge, CASE WHEN sales=0 THEN 0 ELSE ROUND(((margin/sales)*100),2) END as prozentual
FROM (
SELECT invoice.customer_id customer_id, SUM(netamount) sales, SUM(marge_total) margin
FROM (
SELECT *
FROM ar
WHERE transdate BETWEEN <%Anfang%> AND <%Ende%>
) invoice
JOIN (
SELECT customer_id, startdate, LEAD(startdate, 1) OVER (PARTITION BY customer_id ORDER BY startdate) AS enddate
FROM provisioning_rules
WHERE parts_id is null and partsgroup_id is null and vendor_id=(SELECT id FROM vendor WHERE id=<%Vertreter%>)
) customer_periods
ON invoice.customer_id=customer_periods.customer_id AND
invoice.transdate>=customer_periods.startdate AND
(customer_periods.enddate IS NULL OR invoice.transdate<customer_periods.enddate)
GROUP BY invoice.customer_id
) customer_margin
JOIN customer ON customer_margin.customer_id=customer.id
ORDER BY Umsatz DESC;
Abfrageparameter:
- Anfang:
- Typ: Datum
- Beschreibung: Anfangsdatum des Zeitraums
- Standardwert: Kein Standardwert
- Typ: Datum
- Ende:
- Typ: Datum
- Beschreibung: Enddatum des Zeitraums
- Standardwert: Kein Standardwert
- Vertreter:
- Typ: Nummer
- Beschreibung: Vertreter
- Standardwert: Kein Standardwert
- Typ: Nummer
Kundenumsätze nach Vertreter mit Vorjahresvergleich
Name: Kundenumsätze nach Vertreter mit Vorjahresvergleich
Beschreibung: Ausgabe von Umsätzen (enthalten auch nicht-provisionierbare Umsätze) eines Vertreters pro Kunde mit Vergleich zum gleichen Zeitraum im Vorjahr
SQL-Abfrage:
WITH customer_periods(customer_id, startdate, enddate) AS (
SELECT customer_id, startdate, LEAD(startdate, 1) OVER (PARTITION BY customer_id ORDER BY startdate) AS enddate
FROM provisioning_rules
WHERE parts_id is null and partsgroup_id is null and vendor_id=(SELECT id FROM vendor WHERE id=<%Vertreter%>)
)
SELECT
(SELECT vendornumber FROM vendor WHERE id=<%Vertreter%>) AS "Vertreternummer",
(SELECT name FROM vendor WHERE id=<%Vertreter%>) AS "Vertretername",
customer.customernumber as "Kundennummer",
customer.name as "Kundenname",
ROUND(customer_margin.sales,2) as "Umsatz aktueller Zeitraum",
ROUND(customer_margin_before.sales,2) as "Umsatz Vorjahr",
CASE WHEN customer_margin_before.sales=0 THEN 0 ELSE customer_margin.sales*100/customer_margin_before.sales END AS "Umsatzveränderung in %"
FROM (
SELECT invoice.customer_id customer_id, SUM(netamount) sales, SUM(marge_total) margin
FROM (
SELECT *
FROM ar
WHERE transdate BETWEEN <%Anfang%> AND <%Ende%>
) invoice
JOIN customer_periods
ON invoice.customer_id=customer_periods.customer_id AND
invoice.transdate>=customer_periods.startdate AND
(customer_periods.enddate IS NULL OR invoice.transdate<customer_periods.enddate)
GROUP BY invoice.customer_id
) customer_margin
FULL JOIN (
SELECT invoice.customer_id customer_id, SUM(netamount) sales, SUM(marge_total) margin
FROM (
SELECT *
FROM ar
WHERE transdate BETWEEN (<%Anfang%>::date - interval '1 year') AND (<%Ende%>::date - interval '1 year')
) invoice
JOIN customer_periods
ON invoice.customer_id=customer_periods.customer_id AND
invoice.transdate>=customer_periods.startdate AND
(customer_periods.enddate IS NULL OR invoice.transdate<customer_periods.enddate)
GROUP BY invoice.customer_id
) customer_margin_before ON customer_margin.customer_id=customer_margin_before.customer_id
JOIN customer ON customer_margin.customer_id=customer.id OR customer_margin_before.customer_id=customer.id
ORDER BY "Umsatz aktueller Zeitraum" DESC;
Abfrageparameter:
- Anfang:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Ende:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Vertreter:
- Typ: Nummer
- Beschreibung: -
- Standardwert: Kein Standardwert
Kundenumsätze nach Vertreter mit Vorjahresvergleich und Deckungsbetrag prozentual
Name: Kundenumsätze nach Vertreter mit Vorjahresvergleich und Deckungsbetrag
Beschreibung: Ausgabe von Umsätzen (enthalten auch nicht-provisionierbare Umsätze) eines Vertreters pro Kunde mit Vergleich zum gleichen Zeitraum im Vorjahr
SQL-Abfrage:
WITH customer_periods(customer_id, startdate, enddate) AS (
SELECT customer_id, startdate, LEAD(startdate, 1) OVER (PARTITION BY customer_id ORDER BY startdate) AS enddate
FROM provisioning_rules
WHERE parts_id is null and partsgroup_id is null and vendor_id=(SELECT id FROM vendor WHERE id=<%Vertreter%>)
)
SELECT
(SELECT vendornumber FROM vendor WHERE id=<%Vertreter%>) AS "Vertreternummer",
(SELECT name FROM vendor WHERE id=<%Vertreter%>) AS "Vertretername",
customer.customernumber as "Kundennummer",
customer.name as "Kundenname",
ROUND(customer_margin.sales,2) as "Umsatz aktueller Zeitraum",
ROUND(customer_margin_before.sales,2) as "Umsatz Vorjahr",
CASE WHEN customer_margin_before.sales=0 THEN 0 ELSE customer_margin.sales*100/customer_margin_before.sales END AS "Umsatzveränderung in %",
CASE WHEN customer_margin.sales=0 THEN 0 ELSE ROUND(customer_margin.margin*100/customer_margin.sales,2) END AS "Deckungsbeitrag aktueller Zeitraum",
CASE WHEN customer_margin_before.sales=0 THEN 0 ELSE ROUND(customer_margin_before.margin*100/customer_margin_before.sales,2) END AS "Deckungsbeitrag Vorjahr"
FROM (
SELECT
invoice.customer_id customer_id,
SUM(netamount) sales,
SUM(marge_total) margin
FROM (
SELECT *
FROM ar
WHERE transdate BETWEEN <%Anfang%> AND <%Ende%>
) invoice
JOIN customer_periods
ON invoice.customer_id=customer_periods.customer_id AND
invoice.transdate>=customer_periods.startdate AND
(customer_periods.enddate IS NULL OR invoice.transdate<customer_periods.enddate)
GROUP BY invoice.customer_id
) customer_margin
FULL JOIN (
SELECT
invoice.customer_id customer_id,
SUM(netamount) sales,
SUM(marge_total) margin
FROM (
SELECT *
FROM ar
WHERE transdate BETWEEN (<%Anfang%>::date - interval '1 year') AND (<%Ende%>::date - interval '1 year')
) invoice
JOIN customer_periods
ON invoice.customer_id=customer_periods.customer_id AND
invoice.transdate>=customer_periods.startdate AND
(customer_periods.enddate IS NULL OR invoice.transdate<customer_periods.enddate)
GROUP BY invoice.customer_id
) customer_margin_before ON customer_margin.customer_id=customer_margin_before.customer_id
JOIN customer ON customer_margin.customer_id=customer.id OR customer_margin_before.customer_id=customer.id
ORDER BY "Umsatz aktueller Zeitraum" DESC;
Abfrageparameter:
- Anfang:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Ende:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Vertreter:
- Typ: Nummer
- Beschreibung: -
- Standardwert: Kein Standardwert
Anzeige aller Angebote eines Kunden
Name: Anzeige aller Angebote eines Kunden
Beschreibung: Anzeige aller Angebote, zu einem Kunden, mit Auflistung:
Gesamtanzahl Angebote / noch offen / Angenommene Angebote / Abgelehnte Angebote
SQL-Abfrage:
SELECT alle.count as "Gesamtanzahl Angebote", offen.count as "noch offen", angenommen.count as "Angenommene Angebote", abgelehnt.count as "Abgelehnte Angebote"
FROM
(SELECT count(id) count FROM oe where customer_id = <%Kunde%> AND quotation is true ) alle,
(SELECT count(id) count FROM oe where customer_id = <%Kunde%> AND quotation is true AND closed = false ) offen,
(SELECT count(id) count FROM oe where customer_id = <%Kunde%> AND quotation is true AND closed = true AND id in (SELECT from_id FROM record_links WHERE from_table = 'oe' AND to_table = 'oe'
AND to_id IN (SELECT id from oe WHERE customer_id IS NOT NULL and quotation is false))) angenommen,
(SELECT count(id) count FROM oe where customer_id = <%Kunde%> AND quotation is true AND closed = true AND id not in (SELECT from_id FROM record_links WHERE from_table = 'oe' AND to_table = 'oe'
AND to_id IN (SELECT id from oe WHERE customer_id IS NOT NULL and quotation is false))) abgelehnt;
Abfrageparameter:
- Kunde:
- Typ: Text
- Beschreibung: Kunde
- Standardwert: Kein Standardwert
Verkaufte Artikel in Zeitraum für einen Kunden
Name: Verkaufte Artikel in Zeitraum für einen Kunden
Beschreibung: Auswertung aller verkauften Artikel für einen Kunden mit Ausgabe von Rechnungsnummer, Datum,
Verkaufsbetrag, Einkaufsbetrag und Ertrag in einem bestimmten Zeitraum.
SQL-Abfrage:
SELECT partnumber AS "Artikelnummer",description AS "Artikelbeschreibung", invnumber AS "Re.Nr",
transdate AS "Re.Datum", vkbetrag AS "VK-Betrag", ekbetrag AS "EK-Betrag", vkbetrag - ekbetrag AS "Ertrag", text_value AS "Hersteller"
FROM (
SELECT
p.partnumber,
i.description,
a.invnumber,
a.transdate,
c.name,
ROUND(i.qty * i.fxsellprice * (1 - i.discount::numeric) / COALESCE(i.price_factor, 1), 2) AS vkbetrag,
ROUND(i.qty * i.lastcost, 2) AS ekbetrag,
cvar.text_value,
p.id,
i.parts_id,
i.trans_id,
a.id,
c.id
FROM "parts" AS p
INNER JOIN "invoice" AS i
ON p.id = i.parts_id
INNER JOIN "ar" a
ON i.trans_id = a.id
INNER JOIN "customer" c
ON a.customer_id = c.id
LEFT JOIN "custom_variables" cvar
ON p.id = cvar.trans_id AND cvar.config_id = 5
AND cvar.sub_module = ''
WHERE
c.id = <%Kunde%>
AND a.transdate >= <%Anfangsdatum%>
AND a.transdate <= <%Enddatum%>
ORDER BY a.invnumber) AS t;
Abfrageparameter:
- Anfangsdatum:
- Typ: Datum
- Beschreibung: Anfangsdatum
- Standardwert: Kein Standardwert
- Enddatum:
- Typ: Datum
- Beschreibung: Enddatum
- Standardwert: Kein Standardwert
- Kunde:
- Typ: Text
- Beschreibung: -
- Standardwert: Kein Standardwert
Deckungsbeitrag eines Zeitraums für einen bestimmten Kunden
Name: Deckungsbeitrag eines Zeitraums für einen bestimmten Kunden
Beschreibung: Ausgabe von Artikel mit VK- und EK-Preis und deren Deckungsbeitrag unter Beachtung des Rabattes aus den Rechnungen mit: Rechnungsnummer, Position, Artikelnummer, Artikelbeschreibung, VK-Preis, EK-Preis, Rabatt (%), Menge, Deckungsbeitrag (%)
SQL-Abfrage:
SELECT
ar.invnumber AS "Rechnungsnummer",
invoice.position AS "Position",
parts.partnumber AS "Artikelnummer",
invoice.description AS "Artikelbeschreibung",
invoice.sellprice AS "VK-Preis",
parts.lastcost "EK-Preis",
invoice.discount::numeric * 100 AS "Rabatt (%)",
invoice.qty AS "Menge",
CASE WHEN invoice.sellprice=0
THEN 0
ELSE ROUND(100*(invoice.sellprice * (1 - invoice.discount::numeric) - parts.lastcost)/invoice.sellprice, 2)
END AS "Deckungsbeitrag (%)"
FROM invoice
JOIN parts ON invoice.parts_id=parts.id
JOIN ar ON invoice.trans_id=ar.id
WHERE ar.transdate BETWEEN <%Anfang%> AND <%Ende%> AND ar.customer_id=<%Kunde%>
ORDER BY partnumber
Abfrageparameter:
- Anfang:
- Typ: Datum
- Beschreibung: von
- Standardwert: Kein Standardwert
- Ende:
- Typ: Datum
- Beschreibung: bis
- Standardwert: Kein Standardwert
- Typ: Datum
- Kunde:
- Typ: Nummer
- Beschreibung: Kunde
- Standardwert: Kein Standardwert
Lieferanten mit Steuerzone "Inland" und Länderkürzel ungleich "DE"
Name: Lieferanten mit Steuerzone "Inland" und Länderkürzel ungleich "DE"
Beschreibung: Alle Lieferanten mit Steuerzone "Inland" deren Länderkürzel nicht "DE" entspricht ausgegeben mit:
Lieferantennummer, Lieferantenname, Steuerzone, Länderkürzel
SQL-Abfrage:
SELECT v.vendornumber AS "Lieferantennummer",
v.name AS "Lieferantenname",
t.description AS "Steuerzone",
c.iso AS "Länderkürzel"
FROM vendor v,
countries c,
tax_zones t
WHERE v.taxzone_id = 4
AND v.country_id != (
SELECT id
FROM countries
WHERE iso = 'DE'
)
AND v.taxzone_id = t.id
AND v.country_id = c.id;
Lieferanten mit Steuerzone ungleich "Inland" und Länderkürzel "DE"
Name: Lieferanten mit Steuerzone ungleich "Inland" und Länderkürzel "DE"
Beschreibung: Lieferanten mit Steuerzone ungleich "Inland" und Länderkürzel "DE" mit:
Lieferantennummer, Lieferantenname, Steuerzone, Länderkürzel
SQL-Abfrage:
SELECT v.vendornumber AS "Lieferantennummer",
v.name AS "Lieferantenname",
t.description AS "Steuerzone",
c.iso AS "Länderkürzel"
FROM vendor v,
countries c,
tax_zones t
WHERE v.taxzone_id != 4
AND v.country_id = (
SELECT id
FROM countries
WHERE iso = 'DE'
)
AND v.taxzone_id = t.id
AND v.country_id = c.id;
Preisregelexport - Kundenpreise
Name: Preisregelexport - Kundenpreise
Beschreibung: Ausgabe der Kundenpreise, welche zum Zeitpunkt des Exports greifen
SQL-Abfrage:
SELECT
COALESCE(NULLIF(pc.customer_partnumber,''),p.partnumber) AS "Artikelnummer",
COALESCE(NULLIF(pc.customer_partdescription,''),p.description) AS "Artikelbeschreibung",
CASE WHEN lower(pr.qty) IS NULL
THEN ''
ELSE CASE WHEN lower_inc(pr.qty) THEN '>=' ELSE '>' END || ' ' || lower(pr.qty)
END ||
CASE WHEN lower(pr.qty) IS NULL OR upper(pr.qty) IS NULL THEN '' ELSE ' ' END ||
CASE WHEN upper(pr.qty) IS NULL
THEN ''
ELSE CASE WHEN upper_inc(pr.qty) THEN '<=' ELSE '<' END || ' ' || upper(pr.qty)
END AS "Menge",
pr.price AS "Preis",
pr.reduction AS "Abschlag",
pr.discount AS "Rabatt"
FROM parts p
JOIN part_customer_prices pc ON pc.parts_id=p.id
JOIN price_rules pr ON pr.part_id=p.id AND pr.customer_id=pc.customer_id
WHERE pc.customer_id=<%Kunde%> AND pr.obsolete=FALSE AND pr.type='customer'
AND (pr.transdate IS NULL OR pr.transdate @> current_date);
Abfrageparameter:
- Kunde:
- Typ: Nummer
- Beschreibung: Kunde für Kundenpreise
- Standardwert: Kein Standardwert
Preisregelexport - Spezifische Preisregel
Name: Preisregelexport - Spezifische Preisregel
Beschreibung: Ausgabe der Kundenpreise einer bestimmten Preisregel, welche zum Zeitpunkt des Exports greifen mit:
Kundennummer, Kundenname, Artikelnummer, Artikelbeschreibung, Menge, Preis, Abschlag, Rabatt
SQL-Abfrage:
SELECT
COALESCE (c.customernumber) AS "Kundennummer",
COALESCE (c.name) AS "Kundenname",
COALESCE(NULLIF(pc.customer_partnumber,''),p.partnumber) AS "Artikelnummer",
COALESCE(NULLIF(pc.customer_partdescription,''),p.description) AS "Artikelbeschreibung",
CASE WHEN lower(pr.qty) IS NULL
THEN ''
ELSE CASE WHEN lower_inc(pr.qty) THEN '>=' ELSE '>' END || ' ' || lower(pr.qty)
END ||
CASE WHEN lower(pr.qty) IS NULL OR upper(pr.qty) IS NULL THEN '' ELSE ' ' END ||
CASE WHEN upper(pr.qty) IS NULL
THEN ''
ELSE CASE WHEN upper_inc(pr.qty) THEN '<=' ELSE '<' END || ' ' || upper(pr.qty)
END AS "Menge",
pr.price AS "Preis",
pr.reduction AS "Abschlag",
pr.discount AS "Rabatt"
FROM parts p
JOIN part_customer_prices pc ON pc.parts_id=p.id
JOIN customer c ON c.id=pc.customer_id
JOIN price_rules pr ON pr.part_id=p.id AND pr.customer_id=pc.customer_id
WHERE pr.name ILIKE <%Preisregelname%> AND pr.obsolete=FALSE AND pr.type='customer'
AND (pr.transdate IS NULL OR pr.transdate @> current_date);
Abfrageparameter:
- Preisregelname:
- Typ: Text
- Beschreibung: Zur Suche nach mehreren Preisregeln kann % als Platzhalter genutzt werden
- Standardwert: Kein Standardwert
Kunden und Vertreterdaten zu Rechnungen aus bestimmten Zeitraum
Name: Kunden und Vertreterdaten zu Rechnungen aus bestimmten Zeitraum
Beschreibung: Ausgabe der folgenden Daten: Vertreternr., Vertretername, Kundennummer, Kundenname, Straße, PLZ, Ort, Land
SQL-Abfrage:
SELECT
v.vendornumber AS "Vertreternr.",
v.name AS "Vertretername",
c.customernumber AS "Kundennummer",
c.name AS "Kundenname",
c.street AS "Straße",
c.zipcode AS "PLZ",
c.city AS "Ort",
c.country AS "Land"
FROM
customer c
LEFT OUTER JOIN provisioning_rules p ON c.id = p.customer_id
LEFT OUTER JOIN vendor v ON (p.vendor_id = v.id)
JOIN ar ON ar.customer_id = c.id
WHERE
ar.transdate > <%Anfangsdatum%>
AND ar.transdate <= <%Enddatum%>
GROUP by
c.customernumber,
v.vendornumber,
v.name,
c.name,
c.street,
c.zipcode,
c.city,
c.country
ORDER BY c.customernumber;
Abfrageparameter:
- Anfangsdatum:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
- Enddatum:
- Typ: Datum
- Beschreibung: -
- Standardwert: Kein Standardwert
Weihnachtsliste - Vorprüfung
Dieser BDE benötigt die benutzerdefinierte Variable "cp_calender" für Ansprechpersonen
Name: Weihnachtsliste - Vorprüfung
Beschreibung: Vor der Erstellung der Weihnachtsliste sind folgende Informationen wichtig:
1) Gibt es Kunden ohne Ansprechperson?
2) Gibt es Kunden, wo keine Ansprechperson die Variable "Weihnachtskalender" gesetzt hat?
Beide Fälle werden von dem Bericht "Weihnachtsliste - Erstellung" nicht beachtet.
Damit diese Kunden nicht übersehen werden, erfolgt dieser Bericht.
SQL-Abfrage:
--Keine Ansprechperson oder keine Ansprechperson mit CheckBox
SELECT
regexp_replace(cus.customernumber, '\[\[.*\]\]', '') AS Kundennummer,
regexp_replace(cus.name, '\[\[.*\]\]', '') AS Kundenname,
regexp_replace(cus.street, '\[\[.*\]\]', '') AS Straße,
regexp_replace(cus.zipcode, '\[\[.*\]\]', '') AS PLZ,
regexp_replace(cus.city, '\[\[.*\]\]', '') AS Stadt,
(SELECT max(transdate) FROM ar WHERE customer_id = cus.id AND NOT storno) AS letzte_Rechnung
FROM
customer cus
LEFT JOIN contacts con
ON cus.id = con.cp_cv_id
LEFT JOIN custom_variables cv
ON con.cp_id = cv.trans_id
AND cv.config_id = 23 --cp_calender
AND cv.bool_value = TRUE
GROUP BY cus.id, cus.customernumber, cus.name, cus.street, cus.zipcode, cus.city, con.cp_cv_id
HAVING
(COUNT(cv.trans_id) = 0 OR con.cp_cv_id IS NULL)
ORDER BY cus.name;
Weihnachtsliste - Erstellung
Dieser BDE benötigt die benutzerdefinierte Variable "cp_calender" für Ansprechpersonen
Name: Weihnachtsliste - Erstellung
Beschreibung: Auflistung von Ansprechpersonen mit gesetzter Variable "Weihnachtskalender".
Folgende Spalten werden ausgegeben:
Kunden-Nr. -Name, Anrede, Vorname, Nachname, Str. PLZ, Stadt, Tel, Email, Datum von der letzten Rechnung.
SQL-Abfrage:
SELECT
regexp_replace(cus.customernumber, '\[\[.*\]\]', '') AS Kundennummer,
regexp_replace(cus.name, '\[\[.*\]\]', '') AS Kundenname,
CASE
WHEN con.cp_gender = 'f' THEN 'Frau'
WHEN con.cp_gender = 'm' THEN 'Herr'
END AS Anrede,
regexp_replace(con.cp_givenname, '\[\[.*\]\]', '') AS Vorname,
regexp_replace(con.cp_name, '\[\[.*\]\]', '') AS Nachname,
COALESCE(NULLIF(regexp_replace(con.cp_street, '\[\[.*\]\]', ''), ''), regexp_replace(cus.street, '\[\[.*\]\]', '')) AS Straße,
COALESCE(NULLIF(regexp_replace(con.cp_zipcode, '\[\[.*\]\]', ''), ''), regexp_replace(cus.zipcode, '\[\[.*\]\]', '')) AS PLZ,
COALESCE(NULLIF(regexp_replace(con.cp_city, '\[\[.*\]\]', ''), ''), regexp_replace(cus.city, '\[\[.*\]\]', '')) AS Stadt,
regexp_replace(con.cp_phone1, '\[\[.*\]\]', '') AS Tel,
regexp_replace(con.cp_email, '\[\[.*\]\]', '') AS EMAIL,
(SELECT max(transdate) FROM ar WHERE customer_id = cus.id AND NOT storno) AS letzte_Rechnung
FROM
contacts con
JOIN customer cus ON (id = con.cp_cv_id)
WHERE
con.cp_cv_id IN (
SELECT
id
FROM
customer
)
AND con.cp_id IN (
SELECT
trans_id
FROM
custom_variables
WHERE
config_id = 23
AND bool_value = TRUE
)
ORDER BY
cus.name;
No Comments