Blue Flower

Brutto-Rechnung

Es wird oft an der falschen Stelle gesucht z.B. einen Bericht mit Brutto-Feldern im Subreport. Aber es ist recht trivial.
Adressen öffnen > Kunde auswählen > Register Erweitert > Bereich Zuweisung und dort im Feld Brutto-Berechn. ein Häckchen setzen.
Ab jetzt werden die einzelen Positionen als Brutto-Wert angezeigt.

Das Ganze kann via SQL auf ganze Gruppen erfolgen.

1 Variante:
- Alle privaten Kunden sind in einer eigenen Adressgruppe. ID kann aus den Einstellungen > Adressgruppen ausgelesen werden.

UPDATE `adressen` SET `BRUTTO_FLAG` = 'Y' WHERE KUNDENGRUPPE = '1';

 
2. Variante:
- z.B. im Matchcode steht eine eindeutige Info dass es sich um einen privaten Kunden handelt: "Max Mustermann Priv."

UPDATE `adressen` SET `BRUTTO_FLAG` = 'Y' WHERE MATCHCODE like '%priv.%'

 

Debitoren-Nr. editieren
Die Debitoren-Nr.in den Kundenstammdaten ist normaerweise nicht editierbar. Mit diesem Key kann er entsperrt werden.
  Menü Registrierungseditor > auf den Zweig MAIN > ADRESSEN wechseln und folgenden Schlüssel anlegen:
  Name : DEB_NUM_EDI
 
Typ: Integer
 
Wert: 1 (Default 0)


Briefanrede

Meist wird in die Briefanrede, wie von CAO-Faktura vorgeschlagen, nur die Anrede ohne Nachnamen eingetragen. z.B. "Sehr geehrte Frau". Sätestens im Reportbuilder wird es dann unmöglich den Nachnamen hinzuzufügen wenn es kein eigenes Feld mit nur dem Nachnamen gibt. Da normaler Weise unter Name bzw. Name2 immer der Vor- und Nachname zuammen eingetragen wird. Das Anpassen der Briefanrede geht bei vielen Namen nur durch einen SQL-Befehl.

Hier ein paar SQL-Bps. Allerdings sollte etwas SQL-Verständis vorhanden sein wenn dies angewendet wird. Vorab empfehle ich ein Backup ;-)

1 Variante:
- Privatkunden, Vor- und Nachname stehen im Feld Name1
- Briefanrede ist schon ausgefüllt
* Es wird nach einen Leerzeichen in Name1 gesucht und der Textteil danach kopiert. Name2 muss leer sein.

# Testen:
SELECT `NAME1`, `NAME2` , concat(`BRIEFANREDE` , substring(`NAME1`, locate(' ', `NAME2`)), ',' ) AS BRIEFANGEDE_
FROM `adressen`
WHERE locate(' ', `NAME1`)>0
AND trim(IFNULL(`NAME2`, '') = ''
AND `BRIEFANREDE` NOT LIKE ('%Sehr geehrte Damen und Herren;%')
LIMIT 0 , 1000;

# Ändern
UPDATE `adressen` SET `BRIEFANREDE` = concat(`BRIEFANREDE`, substring(`NAME1`, locate(' ', `NAME1`)), ',') WHERE locate(' ', `NAME1`)>0
AND trim(IFNULL(`NAME2`, '') = ''
AND `BRIEFANREDE` NOT LIKE ('%Sehr geehrte Damen und Herren;%');

 

2. Variante:
- Firmen Vor- und Nachname stehen im Feld Name2
- Briefanrede ist schon ausgefüllt
* Es wird nach einen Leerzeichen in Name2 gesucht und der Textteil danach kopiert.

# Testen:
SELECT `NAME2` , concat( `BRIEFANREDE` , substring( `NAME2` , locate( ' ', `NAME2` ) ) , ',' ) AS BRIEFANGEDE_
FROM `adressen`
WHERE locate( ' ', `NAME2` ) > 0
AND `NAME2` NOT LIKE ('% und %')
AND `BRIEFANREDE` NOT LIKE ('%Sehr geehrte Damen und Herren;%')
LIMIT 0 , 1000;

# Ändern
UPDATE `adressen` SET `BRIEFANREDE` = concat( `BRIEFANREDE` , substring( `NAME2` , locate( ' ', `NAME2` ) ) , ',' ) AS BRIEFANGEDE_ WHERE locate( ' ', `NAME2` ) > 0 AND `NAME2` NOT LIKE ('% und %') AND `BRIEFANREDE` NOT LIKE ('%Sehr geehrte Damen und Herren;%');

 

3. Variante
- Vor- und Nachname stehen im Feld Name2
- Briefanrede ist schon ausgefüllt

# Testen
SELECT `NAME2`,
CASE
  WHEN `ANREDE` LIKE ('%Frau%')
  THEN concat('Sehr geehrte Frau ', substring(`NAME2` , locate( ' ', `NAME2`, 2)), ',')
  WHEN `ANREDE` LIKE ('%Herr%')
  THEN concat('Sehr geehrter Herr ', substring(`NAME2` , locate(' ', `NAME2`, 2)), ',')
  ELSE concat('Sehr geehrte(r) Frau/Herr ', substring(`NAME2` , locate( ' ', `NAME2`, 2)), ',')
END AS BRIEFANGEDE_
FROM `adressen`
WHERE locate(' ', `NAME2`) > 1
AND `NAME2` NOT LIKE ('% und %')

# Ändern
UPDATE `adressen` SET `BRIEFANREDE` = 
(CASE
  WHEN `ANREDE` LIKE ('%Frau%')
  THEN concat('Sehr geehrte Frau ', substring(`NAME2` , locate( ' ', `NAME2`, 2)), ',')
  WHEN `ANREDE` LIKE ('%Herr%')
  THEN concat('Sehr geehrter Herr ', substring(`NAME2` , locate(' ', `NAME2`, 2)), ',')
  ELSE concat('Sehr geehrte(r) Frau/Herr ', substring(`NAME2` , locate( ' ', `NAME2`, 2)), ',')
END)
WHERE locate(' ', `NAME2`, 2) > 1
AND `NAME2` NOT LIKE ('% und %')