Author: Ronald Stroethoff, Klaas Freitag

# Het handboek van Kraft

Ronald Stroethoff, Klaas Freitag

## Inleiding

Kraft is een Qt- en KDE-Programma voor het organiseren van kantoor documenten zoals offertes en rekeningen in een klein bedrijf. Het vergemakkelijkt de creatie van documenten en helpt bij vaak voorkomende taken.

Met gebruik van Kraft is geen tekstverwerker meer nodig. Rekeningen en offertes stelt u met slechts een paar muisklikken samen en worden automatisch gearchiveerd. Kraft genereert kwalitatief goede PDF-documenten geschikt om uit te printen, voor email en voor archivering.

Overzicht van de mogelijkheden

  - De eenvoudige creatie van offertes, rekeningen en vergelijkbare documenten.

  - Beheer van klanten, door het gebruik van KAddressbook in de KDE-infrastructuur geïntegreerd.

  - Beheer van relaties tussen documenten, bv. Partial invoices (Gedeeltelijke factuur) ten opzichte van invoices (rekening).

  - Sjablonen voor kop- en voetteksten maar ook voor document-items.

  - De voorcalculatie van prijzen.

  - Materiaalgebruik

  - Instelbare aanmaak van documenten in PDF Formaat voor uitprinten en verzenden per Email.

De broncode van Kraft is open source en wordt onder de licentie GNU General Public License vrij gegeven.

Noot | Kraft wordt door een gemeenschap van gebruikers, programmeurs artiesten en anderen vrijwilligers gedragen. Ook dit gebruikershandboek heeft uw hulp nodig om verbeterd te worden. Lees hier hierover hoe u kan bijdragen

## Eerste gebruik en basisconfiguratie

Als Kraft voor de eerste keer wordt opgestart, dan komt het automatisch in een initiële proces voor het maken van instellingen terecht.

Tijdens de basisconfiguratie wordt u gevraagd om een database-type te selecteren en wordt naar de naam en adres van uw firma gevraagd.

Het adres van uw eigen bedrijf, die automatisch op het uitgeprinte document verschijnt, kan op twee manieren opgegeven worden: Bij het eerste gebruik: gebruik in de basisconfiguratie de eerste tab 'Uit adresboek' om in KAdressbook uw eigen adres te selecteren (als u in KAdressbook uw eigen adres heeft ingevuld) of u gebruikt de tweede tab 'Handmatige adres' om handmatig de informatie van uw bedrijf in te vullen. Deze stap is noodzakelijk voor de correcte aanmaak van uw documenten, omdat het automatisch wordt gebruikt in het proces voor de generatie van het document.

Na de basisconfiguratie, selecteert u Voorkeuren › Instellingen. Hier kunt u Kraft correct voorbereiden zodat het op de juiste manier gebruikt kan worden.

In het dialoogvenster voor de instellingen hebben we de tabs:

    *Standaarddocument
    *Belastingen
    *Dokumenttypes
    *Salarissen
    *Eenheden
    *Uw eigen identiteit

In elke tab is het mogelijk om voor uw specifieke geval realistische waarden in te voeren.

### Document typen

Bij het eerste gebruik vindt u een lijst met verschillende documenttypes, zoals:

- Acceptance of order (opdrachtbevestiging)

- Delivery receipt (afleverbon)

- Invoice (rekening)

- Offer (offerte)

Vertaal deze typen naar uw eigen taal. U kan ook nieuwe documenten toevoegen en documenten verwijderen waarvan u denkt dat u die niet zal gebruiken.

#### Uniek documentnummer

Elk document moet een uniek identificatie hebben die het document identificeert. Er mogen in Kraft geen twee documenten aanwezig zijn met dezelfde identificatie.

De opbouw van het identificatie is in Kraft instelbaar. Hiervoor heeft Kraft het concept van zogeheten volgnummers. Volgnummers worden gebruikt om de opbouw van het documentnummer te definiëren dat op elk document wordt geprint.

Alle documenten van een bepaald type hebben een identificatie die uit een één volgnummersysteem komen. Aan elk documenttype is een volgnummersysteem gekoppeld. Verschillende documenttypes kunnen hetzelfde volgnummersysteem gebruiken om hun identificatie uit te generen. Op die manier kunnen bijvoorbeeld de documenttypes Invoice (rekening) en Final Invoice (eindafrekening) nummers uit dezelfde volgnummersysteem gebruiken, terwijl ze in Kraft verschillende documenttypes zijn. Volgnummersystemen worden geïdentificeerd door hun naam. Gebruikers kunnen nieuwe volgnummersystemen creëren en deze bewerken door op de knop Volgnummersysteem bewerken…​ te klikken

De opbouw van de documentnummers worden gedefinieerd in een sjabloon waarin normale, vaste karakters maar ook enkele variabelen aanwezig kunnen zijn die worden vervangen door hun respectievelijke waarden bij de creatie van het document.

Elk documentnummer moet uniek zijn, en moet dus een teller hebben. Kraft kan twee soorten tellers gebruiken: Een type (variabele `%i`) wordt bij elk nieuw document verhoogt. De andere (variabele `%n`) wordt elke dag teruggezet en begint dus weer bij 1 op elke nieuwe dag. Behalve de teller kan extra informatie toegevoegd worden om een bruikbaar documentnummer te krijgen, zoals een constante tekst of gedeeltes van de datum.

Het standaard volgnummersysteem dat met Kraft wordt geleverd bevat het jaar, de maand en een serienummer. Op deze manier kunt u offertes of opdrachten van het vorige jaar vergelijken met die van dit jaar of van de maand April van het vorige jaar met de maand April van dit jaar en op die manier een indruk krijgen van de resultaten van uw bedrijf.

Zie de volgende tabel voor de beschikbare variabelen die gebruikt kunnen worden:

`%y` of `%yyyy` | het jaar van de documentdatum.
`%yy` | het jaar van de documentdatum (twee cijfers).
`%w` | het weeknummer van de documentdatum.
`%ww` | het weeknummer van het documentdatum met een nul (twee cijfers).
`%d` | de dag van de week als getal van de documentdatum.
`%dd` | de dag van de week als getal van het documentdatum met een nul (wee cijfers).
`%m` of `%M` | de maand van het documentdatum als getal.
`%MM` | de maand van het documentdatum als getal met een nul (twee cijfers).
`%c` | de ID van de klant in het kaddressbook
`%type` | het vertaalde doc type (offerte, rekening enz.)
`%uid` | het contact id van de klant.
`%i` .. `%iiiiii` | de unieke teller (verplicht)
`%n` .. `%nnnnnn` | de unieke dagteller (te combineren met de datum)

In een volgnummersysteem-sjabloon moet naar keuze `%i` of `%n` aanwezig zijn, als dat niet het geval is dan wordt automatisch `%i` eraan toegevoegd.

Zowel `%i` als `%n` hebben numerieke waarden. Ze kunnen ook worden voorafgegaan door extra nullen. De length is afhankelijk van het aantal i’s of n’s die in het sjabloon voorkomen. Bijvoorbeeld, als u een dagelijkse teller met een lengte van drie cijfers en voorloop nullen wenst, dan moet u `%nnn` in de sjabloon plaatsen. Dit werkt tot een lengte van zes karakters.

> Opmerking: het "ontwerp" van het volgnummersysteem en documentnummers is erg belangrijk. Door het flexibele systeem van sjablonen in Kraft kan niet ongeldige volgnummersystemen voorkomen. Dit is de verantwoordelijkheid van de gebruiker.

#### PDF sjabloon

In invoerveld "Sjabloon bestand:" kan de gebruiker een eigen sjabloon opgeven voor dit specifieke documenttype.

Als de bestand-extensie van het sjabloon-bestand is `.trml`, dan wordt de op ReportLab gebaseerde document converter gebruikt. Als de bestand-extensie is `.gtmpl`, dan gebruikt Kraft automatisch de op Weasyprint gebaseerde converter.

> OPMERKING: Het ReportLab systeem voor de PDF creatie wordt in Kraft als verouderd gezien. Gebruikt voor nieuwe sjablonen altijd op Grantlee- en Weasyprint gebaseerde sjablonen.

#### PDF nabewerking

Nadat Kraft het PDF-document heeft gecreëerd is het mogelijk om de gecreëerde PDF samen te voegen met statische PDFs die die zijn gecreëerd en aangepast door de gebruiker. Hiermee is het makkelijk om eigen briefhoofd met een logo of een watermerk aan de resulterende PDF toe te voegen.

De statisch PDFs moeten dezelfde papiergrootte hebben als de gegenereerde documenten. Vergeet niet om voor logos en dergelijke geoptimaliseerde afbeeldingen te gebruiken zodat de grootte van het resulterende document niet wordt opgeblazen.

De opties voor het watermerk zijn:

1. Geen watermerk: Geen watermerk wordt gecreëerd

2. Op eerste pagina: De eerste pagina van de watermark-pdf wordt samengevoegd met de eerste pagina van het resulterende document

3. Watermerk op alle pagina’s: voegt de eerste pagina van de watermerk-PDF samen met alle pagina’s van het resulterende document

4. Afwisselend: Hiervoor moet de watermerk-PDF drie pagina’s hebben. De eerste pagina wordt met de eerste pagina van het gecreëerde document samengevoegd, de tweede en derde pagina worden afwisselend met de volgende pagina’s samengevoegd.

5. Afwijkende eerste en laatste pagina: het watermerk-PDF moet drie pagina’s hebben. De eerste pagina wordt met de eerste pagina van het gecreëerde document samengevoegd, de derde pagina wordt samengevoegd met de laatste pagina, en de tweede pagina met alle pagina’s tussen de eerste en de laatste pagina.

Als een ander statisch PDF document is opgegeven in het vak "Voeg PDF toe:", dan wordt dit aan het eind van de gegenereerde PDF toegevoegd. Daarmee kan Kraft automatisch bijvoorbeeld een blad met de algemene voorwaarden toevoegen aan het uiteindelijke document.

### Belastingen

In veel landen zijn er twee BTW-tarieven voor verkochte producten.

Een hoog tarief en een laag tarief.

Geef hier de toepasselijke waarden op voor het hoge tarief en voor het lage tarief. Als het belastingtarief wijzigt, dan kunt u hier de startdatum met de nieuwe belastingtarieven toevoegen.

### Salarissen

In Kraft is een lijst met salariskosten aanwezig. De items daarin worden in de sjablonen en in de berekeningen gebruikt.

Alle data kan bewerkt en aangepast worden in een configuratiedialoog dat u kunt bereiken via het menu-item 'voorkeuren', waar u ook nieuwe items kunt toevoegen .

Vergeet niet dat deze items later worden gebruikt in de documenten, het is daarom belangrijk dat u ze vertaalt naar uw eigen taal en dat u de correcte bedragen invult.

### Eenheden

In Kraft is een verzameling eenheden aanwezig. In het configuratiedialoog die u kunt bereiken via het menu-item 'Voorkeuren' kunt u de items die al aanwezig zijn bewerken, maar u kunt ook nieuwe items toevoegen.

Vergeet niet dat deze eenheden later worden gebruikt in de documenten, het is daarom belangrijk dat u ze vertaalt naar uw eigen taal.

### Uw eigen identiteit

Controleer hier of de informatie die u heeft opgegeven tijdens de basisconfiguratie correct is voor het gebruik in de documenten.

> Pas op: Als u de keuze heeft gemaakt om de informatie in Kaddressbook te gebruiken dan wordt de informatie die u handmatig toevoegt genegeerd.

Nadat we indien nodig de gewenste correcties in de configuratie hebben aangebracht, gaan we terug naar het hoofdvenster. Hier zien we drie tabs:

- Documenten

- Tijdlijn

- Catalogi

## Catalogi

Kraft gebruikt zogeheten Catalogi waarin sjablonen voor document items worden bewaard. Door de catalogi te gebruiken kan in het dagelijks gebruik het creëren van documenten significant worden versneld. Tijdens de creatie van nieuwe documenten, kunt u in de catalogi de items-sjablonen eenvoudig selecteren en naar het document verplaatsen.

Omdat sjablonen worden georganiseerd in mappen, kunnen hele documenten worden voorbereid en opgeborgen in verschillende mappen om later als documentsjabloon te worden gebruikt.

Uiteraard kunnen de items in de documenten worden bewerkt nadat ze in een catalogus zijn geselecteerd.

Kraft komt standaard met twee verschillende catalogi:

`Material`

Een catalogus met materialen die worden verkocht, met hun inkoopprijs, de winst en hun verkoopprijs.

en `Standard Templates`

Een catalogus met standaard recepten voor werkzaamheden zoals het planten van bomen.

Beide catalogussen kunnen mappen en submappen hebben om daar uw sjablonen in op te bergen . Eerst gaan we gegevens toevoegen aan de

### Materiaalcatalogus

Een catalogus met materialen die worden verkocht, met hun inkoopprijs, de winst en hun verkoopprijs. Eerst gaan we nieuwe mappen en submappen toevoegen.

#### Nieuwe mappen

Selecteer met de muis de kolomnaam `material`, selecteer vervolgens in het contextmenu [Submap toevoegen]

en voeg een extra map zoals `Bomen` toe

#### Nieuwe submappen

We gaan nu submappen toevoegen aan de map `Bomen`. Selecteer met de muis de naam van de map waaraan u een submap wilt toevoegen, selecteer nu in het contextmenu [Submap toevoegen] en voeg extra submappen zoals `Bladbomen` en `Naaldbomen` toe. Nadat we extra mappen en submappen hebben toegevoegd om het materiaal onder te verdelen, gaan we het materiaal zelf toevoegen.

#### Nieuw sjabloon

Selecteer met de muis de naam van de submap of map waarin u materiaal wilt toevoegen. Selecteer de submap bladbomen en selecteer nu in het contextmenu nieuw sjabloon.

Voeg de nieuwe bomen `kokosnoot-boom`, `appelboom` en `ananasboom` toe.

Vul de prijs in die we hebben betaald.

Vul de winst in die we willen hebben op het materiaal.

En vul in per hoeveel ze verpakt zijn.

Hierna voegen we ook in de map 'Wood' een item toe voor 'boompaal' met zijn prijs voor later gebruik.

Nu gaan we naar:

### Standard Templates

Dit is een catalogus met standaard recepten voor werkzaamheden zoals:

- Bomen planten

- Gras maaien

- Transportkosten

- Graszoden leggen

- Graszaad zaaien

We gaan hier de standaard werkzaamheden voor het planten van een boom toevoegen.

Selecteer met de muis de naam van de map [Work] waar u de nieuwe sjabloon aan wilt toevoegen,

selecteer nu in het contextmenu Nieuw sjabloon

en voeg de extra sjablonen `Boom planten` en `Gras maaien` toe.

Nadat we de nieuwe sjabloon hebben aangemaakt, opent een venster met 4 tabs:

- Sjabloon

- Post arbeid

- Vaste kosten

- Materiaal

Eerst gaan we naar de tab:

#### Sjabloon

We geven hier de naam op van de nieuwe standaard sjabloon zoals `Boom planten`

> Pas op: wees voorzichtig, dit is de naam die later op de rekening komt.

we stellen hier in dat het per stuk is en dat de winst 8% is en dat het hoge BTW-tarief van toepassing is.

#### Post arbeid

We vullen hier een aantal werkzaamheden met hun tijd in:

Tabel 1. Gebruikte tijd
Gat graven | 32 min. | worker
Boom plaatsen | 12 min. | worker
Gat opvullen | 17 min. | worker
Water geven | 5 min. | worker

De kosten voor een werknemer die we eerder hebben ingevuld worden nu gebruikt.

> Opmerking: op de rekening zien we later alleen Boom planten, we zullen dan niet de onderdelen Gat graven, boom plaatsen, Gat opvullen, Water geven zien.

We gaan nu naar de tab:

#### Vaste kosten

en we vullen in:

Tabel 2. Vast item
Transportkosten | 35 euro | 1 pcs.

Hierna gaan we naar de tab:

#### Materiaal

Hier kiezen we volgende, waarna het venster [Materiaal toevoegen aan Berekening] opent voor de selectie van materiaal. We gaan dan naar de map 'wood' waar we de 'boompaal' selecteren.

Tabel 3. Gebruikte materialen
1 | boompaal | 3,5 euro

We gaan nu terug naar de eerste tab 'Sjabloon'

In de eerste tab [Sjabloon], kunnen we nu de totale kosten per eenheid zien.

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

We maken een tweede sjabloon 'Gras maaien'.

we vullen in `Gras maaien`, als eenheid kiezen we sm (square meter in het Engels) of m² (in het Nederlands), in de tweede tab vullen we in dat 3 min nodig hebben per vierkante meter.

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

### Kop- en voettekst-sjablonen

Kraft heeft ook sjablonen voor de kop- voetteksten van documenten. Elk type document heeft zijn eigen set tekstsjablonen. To access them, open een document van een bepaald documenttype in de bewerkingsmode en gebruik de knop Sjabloon tonen om de sjablonen zichtbaar te maken. In zowel de kop- als de voet-sectie worden de opgeslagen sjablonen zichtbaar.

Direct onder het navigatie-paneel rechts van het venster ziet u een lijst met de namen van de beschikbare sjablonen. Als u op een van de namen in de lijst klikt dan krijgt u de tekst in het paneel eronder te zien.

Daaronder zijn knoppen met de volgende functies van links naar rechts:

1. Voeg een sjabloon toe aan het document: Deze knop vervangt de tekst van het document met het geselecteerde sjabloon.

2. Vervang tekst in document door sjabloon: Het geselecteerde sjabloon wordt op de huidige plaats van de cursor in het document toegevoegd.

3. Nieuw sjabloon aanmaken: Opent een dialoogvenster om een compleet nieuw sjabloon voor het huidige doc type te creëren.

4. Dit sjabloon bewerken: Opent het dialoogvenster om het huidige geselecteerde sjabloon te bewerken.

5. Dit sjabloon verwijderen: Verwijderd het sjabloon permanent van de lijst met beschikbare sjablonen.

Noot | Sjablonen met de naam Standard zijn de standaard sjablonen voor dat document type. Zijn worden automatisch toegevoegd als een document van dit type wordt gecreëerd.

#### Macro’s

In zowel de kop-sjablonen als de voet-sjablonen kunnen macro’s aanwezig zijn die worden vervangen door uitgerekende waarden op het moment dat het document naar het eindresultaat wordt omgezet.

De macro’s in de volgende lijst zijn beschikbaar:

- `DATE_ADD_DAYS(<amount_days>)`: Geeft de datum van het document plus het aantal dagen dat als parameter voor de macro is opgegeven.

- `ITEM_COUNT_WITH_TAG(<tag>)`: Geeft het aantal items dat zijn getagged met de tag.

- `NETTO_SUM_PER_TAG(<tag>)`: Geeft de netto som van alle items die zijn getagged met de opgegeven tag.

- `BRUTTO_SUM_PER_TAG(<tag>)`: Geeft de brutto som van alle items die zijn getagged met de opgegeven tag.

- `VAT_SUM_PER_TAG(<tag>)`: Geeft de pure belasting van alle items die zijn getagged met de opgegeven tag.

- `IF_ANY_HAS_TAG(<tag>)` en `END_HAS_TAG`: Voegt de tekst tussen de macro’s toe alleen als er tenminste een item is met deze tag.

Als voorbeeld, deze voettekst-sjabloon kan worden gebruikt om automatisch zinvolle teksten te genereren:

    Betaal deze rekening binnen drie weken na de datum van het document, wat is DATE_ADD_DAYS(21).

    IF_ANY_HAS_TAG(Material)
    Deze rekening vermeld het materiaal in ITEM_COUNT_WITH_TAG(Material) items. De netto waarde is NETTO_SUM_PER_TAG(Material),
    plus VAT_SUM_PER_TAG(Material) = BRUTTO_SUM_PER_TAG(Material).
    END_HAS_TAG

We zijn nu klaar voor de eerste rekening.

## De creatie van documenten

### De eerste rekening

Open de tab Documenten

Klik op Nieuw document

Het document-venster [creation wizard] opent.

Selecteer in document type `invoice` (rekening).

Vul op het whiteboard een korte tekst over wat de rekening is, zoals: `gras maaien en boom planten voor de heer Jansen` .

Klik op Volgende

Selecteer in het volgende venster de naam en adres van de klant.

(Als de naam en adres niet aanwezig zijn, klik dan op nieuw contactpersoon of op contactpersoon bewerken als u het contact wilt bewerken)

Klik op OK.

Nu opent het venster document-items.

Dit venster heeft bovenaan 2 tabs en 3 knoppen:

- Item toevoegen…​,

- Korting geven,

- Document tonen.

Aan de linkerkant kunt u alle items zien die we op de rekening willen plaatsen, aan de rechterkant zien we de tekst van de koptekst, de totale prijs en de voettekst.

Als u op de tekst van de koptekst of van de voettekst aan de rechterkant klikt dan verandert het venster zodanig dat u de koptekst of de voettekst kan bewerken.

Pas de koptekst en de voettekst aan naar uw situatie, in de voettekst kan u bijvoorbeeld een tekst plaatsen als: Wij maken uw tuindroom werkelijkheid.

Klik op de knop Document tonen.

De rechter tab verandert en toont nu de eerder gemaakte sjablonen, we selecteren in de map 'Work', de submap 'Boom planten' en klikken op de knop met de naar links wijzende pijl aan de onderkant.

Een nieuw venster [Item van sjabloon creëren] opent.

Omdat we 2 bomen hebben geplant, gaan we naar het veld [invoegen] en veranderen dit naar 2 pcs (in het Nederlands stk).

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

Het venster sluit en we gaan terug naar het hoofdvenster.

We klikken opnieuw op Document tonen en selecteren deze keer `gras maaien`, we klikken opnieuw op de knop met de pijl, in het geopende venster stellen we in dat het grasveld 24 vierkante meter was.

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

We add now manually an item by clicking on the button Add item… and the window [create new item] opens.

Omdat we een speciale boom hebben geleverd, vullen we hier de naam van de speciale boom `liguster` in, in het veld invoegen vullen we het aantal van de speciale boom die we geleverd hebben in en de prijs daarvan.

> Pas op: verlies niet uit het oog dat we in de catalogus een winst op de prijs van het materiaal kunnen toevoegen, in de rekening en in de offerte kunnen we geen winst aan de prijs van het materiaal toevoegen.

We hebben nu een rekening met 3 items.

Klik op OK om de rekening op te slaan of op Annuleren om de rekening te verwijderen.

We klikken op OK en slaan het resultaat op.

Uw eerste rekening is nu klaar voor verzending.

In het venster met documenten zien we onze eerste rekening, merk op dat dit document een documentnummer heeft die we aan de linkerkant zien.

Bovenaan het venster met alle rekeningen zien we de knop btn: [Print Document], waar we op klikken.

Van de rekening zal nu een PDF worden gemaakt die we op papier kunnen uitprinten of per email naar de klant kunnen versturen.

Hierna gaan we een offerte maken voor wat werk in een tuin.

### Een offerte creëren

De klant heeft gevraagd of we een boom kunnen planten, we bieden 3 verschillende bomen aan die we kunnen planten.

Daarnaast hebben we gezien dat er een dode boom is, waarvoor we een aanbod doen om deze als extra werk te verwijderen.

De totale prijs willen we exclusief de prijs voor de verwijdering van de dode boom en alleen de prijs van een boom en niet van drie bomen.

Open opnieuw de tab Documenten.

Klik op Nieuw document

Het document-venster [creation wizard] opent.

Selecteer in btn: [document type]>offer.

Vul op het whiteboard een korte tekst over waarover de offerte gaat, zoals: `een boom planten en verwijding van dode boom` .

Klik op Volgende

Selecteer in het volgende venster de naam en adres van de klant.

(Als de naam en adres niet aanwezig zijn, klik dan op nieuw contactpersoon of op contactpersoon bewerken als u het contact wilt bewerken)

Klik op OK.

Nu opent het venster [Document bewerken].

Dit venster heeft bovenaan 2 tabs en 3 knoppen:

- Item toevoegen…​,

- Korting geven,

- Document tonen.

Klik op de knop Document tonen.

De rechter tab verandert en toont nu de eerder gemaakte sjablonen, we selecteren in de map 'Work', de submap 'Boom planten' en klikken op de knop met de naar links wijzende pijl aan de onderkant.

Een nieuw venster [Item van sjabloon creëren] opent.

Omdat we 1 boom willen planten, gaan we naar het veld [invoegen] en houden dit op 1 pcs (in het Nederlands stk).

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

Het venster sluit en we gaan terug naar het hoofdvenster.

We klikken op de knop Document tonen en selecteren deze keer de catalogus Material.

De material-catalogus opent, en we kunnen in de map `Bomen` de submap `Bladbomen` selecteren waar we de `appelboom` selecteren die we eerder hebben gemaakt.

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

Het venster sluit en we gaan terug naar het hoofdvenster.

We add now manually an item by clicking on the button `Add item…`.

Het venster [Nieuw item aanmaken] opent.

We willen dat de klant een keuze kan maken tussen een appelboom, een perenboom en de liguster.

Daarom gaan we een perenboom handmatig toevoegen.

We click on the button Add item… and the window [create new item] opens.

We vullen hier de naam van de boom `Perenboom` in, en in veld invoegen vullen we het aantal van de speciale bomen in die we kunnen leveren en de prijs daarvan.

We willen dit aan de materiaalcatalogus toevoegen voor toekomstig gebruik, daarom selecteren we ook [Dit item als sjabloon bewaren voor latere documenten] en selecteren we in opslaan in map 'bomen'.

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

We doen dit ook voor de liguster.

We hebben nu 3 items met bomen in de offerte.

En tenslotte voegen we een item toe met 'boom verwijderen' met 0,5 uur voor 32 euro.

Links van het item zien we 2 knoppen:

Een knop met een vlag en een knop met wat lijkt op een pagina.

We selecteren de bovenste knop met de pagina waarna een contextmenu opent met de items:

    [ Soort item]->[Normaal]
    [Soort item]>[Alternatief]
    [Soort item]>[Op verzoek]
    [Belasting]
    [Omhoog verplaatsen]
    [Omlaag verplaatsen]
    [Item vastzetten]
    [Item ontgrendelen]
    [Verwijder item]

We selecteren hier [Soort item] en veranderen dit voor `perenboom` van [normaal] naar [alternatief].

We doen dit ook voor [liguster] en voor [Boom verwijderen] veranderen we dit van [normaal] naar [Op verzoek].

Klik op OK om het resultaat op te slaan of op Annuleren om het resultaat te verwijderen.

We willen het resultaat bekijken en daarom klikken we op de knop Document tonen.

We zien nu dat de prijs voor de perenboom, de liguster en het verwijderen van de boom niet is gebruikt voor de totale prijs. Als we tevreden zijn met het resultaat, dan klikken we op de knop OK waarna we klikken op de knop Document afdrukken voor het maken van een PDF die we kunnen uitprinten of naar de klant kunnen sturen.

Na uw eerste rekening is nu ook uw eerste offerte klaar voor verzending.

### Een Acceptance of order (opdrachtbevestiging) aanmaken

Het documenttype "Acceptance of Order" (opdrachtbevestiging) wordt verstuurd als vervolg op een offerte.

Als een klant een verzoek heeft gemaakt, dan zullen we een offer (offerte) sturen waarin we beschrijven welke items we zullen gaan leveren. Hopelijk zal de klant een order geven voor het werk.

Het is een goede gewoonte om op de order te reageren met een "Acceptance of order" (opdrachtbevestiging) waarin we alle items beschrijven die we zullen gaan leveren. We kunnen de "Acceptance of order" op dezelfde manier maken als waarmee we de invoice (rekening) of de offer (offerte)hebben gemaakt door elk item te selecteren en het aantal te leveren aan te passen. Dit kost tijd en we kunnen fouten maken door items te vergeten of een incorrect aantal in te vullen.

U kunt dit sneller doen door de offer (offerte) in de lijst te selecteren en vervolgens Creëer opvolg document in het context menu of in het hoofdmenu te selecteren.

We hebben nu als documenttype de keuze uit:

    [Acceptance of order]
    [Invoice]
    [Partial Invoice]
    [final Invoice]
    [Progress Payment Invoice]

We selecteren nu "Acceptance of order". We hebben nu een kopie van de offerte als een Acceptance of order (vergeet niet om de alternatief items en de op verzoek items aan te passen.)

U kunt dit ook doen voor de creatie van de invoice (rekening) als opvolging van de opdrachtbevestiging. Elk documenttype heeft een specifieke lijst met opvolg-documenten. Het is een goede gewoonte om op de rekening precies te omschrijven wat is geleverd.

## Kraft naar wens aanpassen

Een groot gedeelte van de grafische interface van Kraft kan aangepast worden, met name de uitvoer die het genereert.

### Documentuitvoer aanpassen

Om PDF’s te creëren, moet een sjabloon worden gevuld met de document data die in Kraft is gecreëerd. De sjabloon definieert hoe de het resulterende document eruit komt te zien, d.w.z de ingestelde lettertypes, de plaats van de elementen en dergelijke.

Het bestand dat is samengesteld uit een combinatie van de data en de sjabloon wordt geconverteerd naar een PDF met een speciaal document creation script. Dit alles wordt automatisch door Kraft gestart als een document uitgeprint moet worden.

In Kraft kan elk documenttype zijn eigen sjabloon hebben voor de creatie van een PDF. Welk wordt gebruikt kan u instellen in het instellingsvenster voor documenttypes.

#### WeasyPrint Documenten

Noot | Bij Kraft wordt nog steeds de oude op ReportLab gebaseerde converter meegeleverd, maar dit zal in de toekomst veranderen. Het op de WeasyPrint gebaseerde systeem zal in de toekomst uitsluitend gebruikt worden. Het wordt aanbevolen om de bestaande sjablonen aan te passen.

Kraft gebruikt met WeasyPrint een zeer krachtige generator waarmee het erg makkelijk is om documenten te creëren die intensief naar naar wens aangepast kunnen worden en toch een goede kwaliteit hebben.

WeasyPrint converteert een html-bestand naar PDF. Daarbij wordt een cascade stylesheet (CSS)-bestand geïntegreerd wat een grote invloed heeft op het uiterlijk van het PDF-document.

De html- en CSS invoerbestanden voor WeasyPrint worden gecreëerd met de hulp van het Kraft sjabloonbestand.

Om voor een document een op WeasyPrint gebaseerde sjabloon te gebruiken, creëert u eenvoudig een sjabloonbestand en slaat deze op met de extensie .gtmpl. Met deze bestand-extensie gebruikt Kraft automatisch WeasyPrint met daarbij Grantlee sjablonen voor de rendering.

Vanaf versie 0.95 van Kraft vindt u een voorbeeld document in het Grantlee- en WeasyPrint formaat. U kunt het vinden in `/usr/share/kraft/reports/invoice.gtmpl` of online op Github. Een voorbeeld CSS-bestand `kraft.css` (on Github) wordt meegeleverd zodat u dit als startpunt kan gebruiken om het naar wens aan te passen.

#### Sjabloon variabelen

Om de PDF te genereren, moet Kraft de data van het document waaraan u in Kraft heeft gewerkt overbrengen naar het input-document dat met de hulp van Weasyprint wordt verwerkt tot een PDF. Daarvoor gebruikt Kraft een tekstsjabloon. Daarin vervangt Kraft variabelen door de daadwerkelijke waarden.

De tag `{{ doc.doctype }}` wordt bijvoorbeeld tijdens het genereer proces vervangen door het huidige document type.

De syntax is gebaseerd op de Django syntax voor sjablonen zoals het beschreven wordt in de documentatie.

#### Adding a Logo

On the PDF output it is nice to have a logo image included, if the documents should not be printed on a prepared stationary that comes with a printed logo already.

This chapter describes a few methods to achieve that with the weasyprint based template.

###### PDF Watermark Funktionality

The first, and easiest way to add a logo and other details on the print out is to use the so called PDF Watermark option.

That means that the generated document, which does not contain a logo at all, is merged with another PDF into one doc. The so called watermark feature requires an otherwise empty PDF page of the same size as your generated document, that has the logo printed at the right position. It can be created with a text processor that can export PDF.

In the Kraft doc type settings dialog, the watermark options for a specific doc type can be selected. The watermark PDF file can be selected and either be applied to the first page only, or to every page of the generated document.

Once set up, Kraft automatically merges the generated document with the watermark PDF. The result document contains the content of both documents merged together. This is not only useful for logos, but also other details in the document footer.

###### CSS Directives for Pages

The second option is to use the CSS directive for page content on printed HTML pages. This only works with the new weasyprint based doc generation.

It uses Cascading Style Sheet (CSS) directives for paged media. CSS uses the `@page` keyword to define attributes of the page on which the content is printed. Weasyprint makes heavy use of that, for example to define the page size.

In the Kraft default template for weasyprint called `invoice.gtmpl` this page section can be found:

    @page {
        size: A4;
        margin-left: 2.4cm;
        margin-top:27mm;
        margin-right: 1.6cm;
        margin-bottom: 2cm;
        color: #2f590a;
    }

which defines the page size to be A4, with the given margins and a default text color.

To add a logo on in the top left corner of the first page of the result doc, the following snippet could be added:

    @page :first {
      margin-top: 20mm;
      margin-bottom: 3cm;

      @top-left {
        content: url(/home/miller/miller_logo_s1.png);
        width:3cm;
        height: 1cm;
      }
    }

This displays the top left content only on the first page, and also assigns a different top- and bottom margin to the first page. Note that the content url in the example is a local path, but any valid URL can be used.

###### Show in absolutely placed divs

#### EPC QR Code

Met de door Weasyprint gegenereerde PDF kan Kraft overweg met de EPC QR Code wat een implementatie is van een Europese standaard voor betalingen via de computer en mobiele apparaten.

In Duitsland is het ook bekend als Giro Code, in België als Bancontact QR, in Nederland als iDEAL QR-code en in Spanje is het ook bekend als Bizum QR-code.

In Duitsland wordt het gebruikt door de Giro Code en in Nederland wordt het geaccepteerd door de officiële iDEAL QR-code app.

In België en Nederland wordt het geaccepteerd door de apps van vele banken, en in Oostenrijk en Finland wordt het geaccepteerd door de apps van alle banken.

Om de EPC QR code op de afgedrukte rekening te gebruiken,moet de informatie over de bankrekening toegevoegd worden aan het dialoogvenster in Kraft over de eigen identiteit. De iDEAL QR-code wordt op dit moment alleen gegenereerd voor documenten van het document type `Rechnung`.

Om de gegenereerde EPC QR Code op het PDF document te krijgen, moet aan het Weasyprint sjabloon een code zoals hieronder toegevoegd worden:

        {%if doc.isInvoice and epcqrcode.valid %}
        <p class="epcqrcode">
          <img class="epc" src="file://{{ epcqrcode.svgfilename }}" alt="EPC QR Code" />
          Dieser QR Code ermöglicht einfaches, sicheres und schnelles Begleichen dieser Rechnung via GiroPay:
          Diesen Code mit dem Smartphone scannen und Überweisung per Banking App aufgeben.
        </p>
        {% endif %}

## Menu’s en sneltoetsen

### Hoofdvenster van het programma

#### Het menu Bestand

    [Bestand]>[Afsluiten]
    [Ctrl]+[Q]
    Sluit het programma af.

#### Het document-menu

    [Document]>[Document tonen]
    [Ctrl]+[R]
    Opent een venster met het geselecteerde document om deze te tonen.

    [Document]>[Document bewerken]
    [Ctrl+O]
    Opent een venster met het geselecteerde document voor bewerking.

    [Document]>[Open gearchiveerd document]
    [Ctrl]+[A]
    Opent een gearchiveerd document.

    [Document]>[Nieuw document]
    Opent een venster met een wizard voor de creatie van een nieuw client-document.

    [Document]>[Kopieer Document]
    Maakt een kopie van het geselecteerde client-document naar een nieuw client-document
    Deze kan bij een andere klant horen of zelfs een ander documenttype zijn.

    [Document]>[Creëer een opvolg Document]
    Kopieert de inhoud van een offerte naar een order-acceptatie of een rekening.

    [Document]>[Document afdrukken]
    Creëert een PDF van het geselecteerde client-document zodat u deze kan emaillen of
    uitprinten.

    [Document]>[Verzend document]
    [Ctrl]+[M]
    Verzend een document per email.

#### Het instellingen-menu

    [Voorkeuren]>[Tag sjabloon bewerken]
    [Ctrl]+[E]
    Opent een venster waarin u tags (zoals work,material, plants of discounts)
    kunt toevoegen, bewerken of vertalen.

    [Voorkeuren]>[De initiële aanmaak opnieuw uitvoeren]
    [Ctrl+R]
    Voert de basisconfiguratie opnieuw uit. Hierna is een herstart van Kraft nodig.

    [Voorkeuren]>[Werkbalken]
    Hier kunt u beslissen of de `hoofdwerkbalk` en de werkbalk `Document acties`
    worden getoond.

    [Voorkeuren]>[Instellingen]
    [Ctrl]+[Shft]+[,]
    Hier kunt u Kraft instellen.

### Het document-bewerkingsvenster.

#### Het contextmenu

     [Context]>[Soort item]
     wijzigt de status van dit item tussen
    * Normaal
    * Alternatief
    * Op verzoek

     [Context]>[Belasting]
    Lijkt niet te werken.

    [Context]>[Omhoog verplaatsen]
    Verplaatst dit item een plaats omhoog in het document.

    [Context]>[Omlaag verplaatsen]
    Verplaatst dit item een plaats omlaag in het document.

    [Context]>[Item vastzetten]
    Het is niet duidelijk wat het doet.

    [Context]>[Item ontgrendelen]
    Het is niet duidelijk wat het doet.

    [Context]>[Verwijder item]
    Verwijdert dit item uit het document.

## Geavanceerde onderwerpen

Dit hoofdstuk beschrijft geavanceerde onderwerpen rond het gebruik van Kraft. Daarbij wordt enige kennis van Linux veronderstelt, en het is verstandig om de instellingen door ervaren Linux-beheerders uit te laten voeren en deze vervolgens zorgvuldig en uitgebreid te testen.

### Kraft gemeenschappelijk gebruiken.

Kraft kan gemeenschappelijk in een gedistribueerde omgeving gebruikt worden. Dat houd in dat meerdere gebruikers op hun eigen desktop met hun eigen Kraft instance met dezelfde data kunnen werken.

De hele situatie is aan verandering onderhevig, omdat Kraft in de nabije toekomst ownCloud als privé Cloud voor de opslag van de data zal gebruiken.

#### Database en Document-pool gezamenlijk gebruiken

De eenvoudigste situatie is als twee of meer Kraft-gebruikers de database gemeenschappelijk gebruiken en toegang tot dezelfde pool van PDF-documenten op de harde schijf hebben. Om het eenvoudig te houden, worden hier de situatie met twee gebruikers beschreven.

Een veelvoorkomende situatie kan als volgt zijn: twee verschillende Linux gebruikers willen Kraft gebruiken. Ze hebben beide hun eigen computer en werken in hetzelfde netwerk. Dit voorbeeld beschrijft een situatie met een hoofdkantoor die Kraft in de normale modus gebruiken, en een Notebook met Kraft, die in de read-only modus is om de documenten te bekijken, de catalogus te raadplegen en dergelijke.

Daarvoor is het volgende vereist:

1. Als Database-Backend wordt MySQL of MariaDB gebruikt. Sqlite is niet mogelijk.

2. De Database is met de gebruiker MySQL vanuit beide computers bereikbaar.

3. De map waarin de documenten worden opgeslagen, wordt voor beide computers bereikbaar zijn (shared).

> Pas op: Er is geen beveiliging tegen het feit dat beide gebruikers tegelijk hetzelfde document kunnen bewerken. Om dat dit gevaarlijk is en tot onvoorziene resultaten kan leiden, raden wij aan om Kraft buiten het kantoor alleen in de readonly-modus te gebruiken. Deze readonly-modus wordt met de parameter -r ingeschakeld.

De database gezamenlijk gebruiken

De database-server moet op de hoofdmachine geïnstalleerd zijn, of het moet op een gespecialiseerd apparaat zoals een NAS geïnstalleerd zijn. De snelheid van het netwerk beïnvloed de bruikbaarheid natuurlijk enorm.

Howtos voor het gebruik van MySQL zijn op het internet te vinden.

De map met de document Pool delen (sharen)

Kraft schrijft de gegenereerde PDF’s in een lokale map. Welke dat is, kunt u instellen in het config-bestand van Kraft. Het config-bestand moet voor alle exemplaren van Kraft correct ingesteld zijn.

U kunt deze vinden in de thuismap van de gebruiker met de relatieve pad `.config/kraftrc`. Daarin moet de volgende tekst voorkomen:

    [reporting]
    PdfOutputDir=/data/space/kraftdoc/pdf

Er zijn verschillende manieren om de map te delen (sharen), bijvoorbeeld een NFS of een SMB Server. Het is belangrijk dat gebruikers van beide machines toegang hebben tot deze bestanden. De hoofdgebruiker heeft lees- en schrijfrechten nodig, de read-only gebruiker heeft voor de bestanden alleen lees-rechten nodig.

Een aanbevolen opstelling is een NFS Share met autofs, die op de hoofdmachine is ingesteld. Om de toegang tot de bestanden te beheren, raden wij aan om een gebruikersgroep te creëren waarin u de toegangsrechten kan beheren.

Kraft in read-only modus

Om Kraft in de read-only modus te starten, moet het programma met de volgende parameter `-r` gestart worden.

### Gebruik van XRechnung

Kraft ondersteund het gebruik van de XRechnung standaard. Dat is een digitaal formaat voor electronische rekeningen, en als wet ingevoerd in Duitsland wat een EU richtlijn volgt. De XRechnung is een XML-bestandsformaat ontworpen voor dat doel.

Om de XRechnung Export productief te gebruiken, is nog een beetje handwerk in Kraft nodig. Kraft creëert het XML-bestand aan de hand van een sjabloon, vergelijkbaar met de normale PDF documenten. Dit houdt in dat het een sjabloon laadt wat statische elementen bevat (b.v. het adres van het bedrijf) die niet veranderen tussen de verschillende rekeningen. De dynamische elementen (data over de klant, items enz.) worden in het sjabloon geplaatst tijdens de stap van het generen.

Om correcte XRechnung-bestanden te generen voor het desbetreffende bedrijf, moet de gebruiker het sjabloonbestand handmatig aanpassen aan de eisen van het bedrijf. Merk op dat u dat maar eenmalig hoeft te doen en dat het niet moeilijk is voor iemand met een beetje computerervaring (Basiskennis van XML is gewenst).

Om het bestand aan te passen aan de eisen van het bedrijf, kunt u het beste beginnen met het voorbeeld XRechnung-bestand. U moet het downloaden en vervolgens opslaan op een plek waar u het kan bewerken. Open het in een normale tekstverwerker, zoals Kate.

Bestudeer nauwkeurig het bestand zonder dat u afgeschrikt wordt door het XML-opmaak. Alle user strings (d.w.z. bedrijfsnaam, adres en dergelijke) zijn specifiek voor de gebruiker en moeten daarom overeenkomstig vervangen worden. Zoek de details over de opmaak hier op voor een beter begrip van de betekenis van de velden.

Zorg ervoor dat u de correcte XML-opmaak niet verstoort en wijzig niet de locatie van waar `{{ template_name }}` is gebruikt.

Nadat het bestand is aangepast aan de wensen, opent u het dialoogvenster voor de instellingen van Kraft en voer de bestandsnaam in het invoerveld voor het XRechnung Sjabloonbestand in de pagina voor document-standaarden.

Na deze stap zal het menu item Export XRechung een dialoogvenster openen voor het ingeven van het bestandsnaam waarmee de XRechnung rekening wordt opgeslagen.

Dit bestand kan nu verzonden worden naar de ontvanger van de rekening.

Noot | Er zijn validators voor rekeningen in het XRechnung formaat op het internet te vinden. Het is verstandig om het bestandsformaat van de XRechnung dat uit Kraft is geëxporteerd te laten valideren.

### De taalregio wijzigen

Als het nodig dat Kraft een andere taalregio (bijvoorbeeld voor een andere valuta) gebruikt dan die in de huidige desktop is ingesteld, dan kan dit worden bereikt door de gewenste taalregio in het opstart-bestand van Kraft in te stellen.

Bij een linux desktop, worden programma’s normaal gesproken opgestart met de hulp van een zogeheten desktop-bestand. Hierin is informatie aanwezig over hoe het Kraft-programma wordt opgestart als de gebruiker klikt op het pictogram op de desktop of in het start menu.

Het desktop-bestand is meestal te vinden in `/usr/share/applications/de.volle-kraft-voraus.kraft.desktop`.

Daarin is de volgende regel aanwezig

    Exec=kraft %u

wat het programma start met de standaard taalregio.

Als u dit bijvoorbeeld wijzigt naar

    Exec=env LANG=de_DE.UTF-8 kraft %u

dan verandert dat naar de Duitse taalregio, onafhankelijk van de desktop environment locatie.

## Dankbetuigingen en licentie

Program and documentation copyright 2004–2024 Klaas Freitag

Documentation copyright 2020-2024 Ronald Stroethoff