Author: Ronald Stroethoff, Klaas Freitag

# Het handboek van Kraft

Ronald Stroethoff, Klaas Freitag

## Inleiding

Kraft is a Qt and KDE application to organize office documents like quotes and invoices in a small business. It eases the creation of documents and helps with repeating tasks.

Using Kraft, there is no need for fiddling with a text processor any more. Documents are created by a few clicks, edited, generated and archived automatically. Kraft generates high quality PDF output for printing, mailing and archiving.

Overzicht van mogelijkheden

  - Simple creation of offers, invoices and similar documents.

  - Customer management, deeply integrated with the mature KDE KAddressbook.

  - Maintenance of document relations, ie. Partial invoices vs. invoices.

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

  - Pre calculation of item prices.

  - Materiaalgebruik

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

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

Noot | Kraft is driven by community of users, coders, artists and others by voluntary work. Also this manual needs contributions! Learn more on how to contribute!

## Eerste gebruik en basisconfiguratie

When Kraft is started for the first time, it automatically enters the initial setup process.

During the initial setup you are asked to select a database to use and give the name and address of your company.

You can fill in your company address (that appears on the printed documents) in two ways: in the setup procedure use the first tab Select from Addressbook for to select your on address in KAddressBook (if you have filled your own address in KaddressBook) or use the second tab Manual entry for to fill in the information of the address from your company manually. This step is necessary for the correct generation of your documents as the address is automatically used in the document generation step.

After the initial setup, select Preferences › Settings. That allows to prepare Kraft correctly so it can be used in a proper way.

In the Preferences dialog we have the tabs:

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

Each of the tabs allows to enter useful values for the specific use case.

### 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

Each document has to have an unique identifier that identifies the document. There must not be two documents in Kraft with the same identifier.

The format of the identifier is configuratable in Kraft. For that, Kraft has a concept of so called number cycles. Number cycles are used to define the form of the document number which is printed on every document.

All documents of a certain type have identifiers taken out of one number cycle. Each document type has a number cycle assigned. Different document types can use the same number cycle to generate ids from. That way, for example the document types Invoice and Final Invoice can use numbers from the same number cycle, even thought they are different document types in Kraft. Number cycles are identified by their name. User can create new number cycles and edit them clicking on the button Edit Number Cycles…​

The format of the document numbers are defined by a template that can contain normal, fixed characters and also some variables that are replaced by the respective values when the document is created.

Each identifier needs to be unique, and thus has to contain a counter. Kraft supports two types of counter: One (variable `%i`) is incremented globally for every new document. The other (variable `%n`) is reset every day and starts at 1 again on every new day. In addition to the counter, more information can be added to the template form an useful number. Examples are a constant text or parts of the date.

The default numbercycle delivered with Kraft contains the year, the month and a serialnumber. That way you can compare offers or orders from last year with this year or the month April of last year with the month April of this year and get on this way an impression from the results of your business.

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

`%y` or `%yyyy` | the year of the document date.
`%yy` | the year of the document (two digits).
`%w` | the week number of the document date.
`%ww` | the week number of the document date with leading zero.
`%d` | the day number of the document date.
`%dd` | the day number of the document date with leading zero.
`%m` or `%M` | the month number of the document date.
`%MM` | the month number with leading zero.
`%c` | the customer id from kaddressbook
`%type` | the localised doc type (offer, invoice etc.)
`%uid` | the contact id of the client.
`%i` .. `%iiiiii` | the unique counter
`%n` .. `%nnnnnn` | the unique day counter (combine with date)

A number cycle template needs to contain either `%i` or `%n`, if not, `%i` is appended automatically.

Both `%i` and `%n` are numeric values. They can also be padded with with leading zeros. The length is defined by the number of i’s or n’s put into the template. For example, if a daily counter with length of three and leading zeros is desired, `%nnn` has to be put into the template. This works up to a length of six characters.

> Noot | The "design" of the numbercycles and document numbers is very important. With the flexible system of templating Kraft can not prevent invalid number cycles. It is in the responsibility of the user.

#### PDF Template

In the entry field Template File: the user can select a custom template for this specific document type.

If the file extension of the template file is `.trml`, the ReportLab based document converter is used. If the file extension is `.gtmpl`, Kraft automatically uses the Weasyprint based converter.

> Noot | The ReportLab system for PDF creation is deprecated in Kraft. Please, for new templates, always use Grantlee- and Weasyprint based templates.

#### PDF Postprocessing

After Kraft has created the PDF document it is possible to merge the created PDF with static, customized PDFs created by the user. With that, it is easy to add a custom stationery with a logo to the resulting PDF ("Watermark").

The static PDFs should have the same page size as the generated documents. Keep in mind to use optimized images for logos etc. to not blow up the size of the result document.

The watermark options are:

1. No Watermark: No watermark is created

2. On first page: The first page of the watermark.pdf is merged with the first page of the result document

3. Watermark on all pages: Merges the first page of the watermark PDF to all pages of the result document

4. alternating: For this, the watermark PDF needs to have three pages. The first page is merged to the first page of the result document, the second and third page are alternated merge to subsequent pages.

5. different first and last page: the PDF needs to have three pages. The first page is merged to the first page of the result document, the third page to the last, and the second to all page between first and last page.

If there is another static PDF document put into the entry field "Append PDF:", it is appended to the generated PDF. With that, Kraft will automatically add for example terms and conditions documents to the final document.

### Belastingen

In many countries there are two kinds of VAT-taxes for sold products.

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

A list of wage costs is maintained in Kraft. The items are used in templates and during calculation.

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

A list of units of measurement is maintained in Kraft. In Kraft Configuration Dialog reachable through the Settings menu can you edit and customize items already in the list, and also can you add new items to the list.

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 supports so called Catalogs in which templates for document items are kept. With the catalogs creating documents can be significantly accellerated in the day to day business. When creating new documents, the items templates from the catalogs can easily selected and moved over to the document.

Since templates are organized in chapters entire documents can be prepared in different chapters to be used as template documents.

Of course the items in the documents can be edited after they got picked from a catalog.

By default Kraft comes with two different catalogs:

`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 uw sjablonen onder te verdelen . Eerst gaan we gegevens toevoegen aan de

### Material Catalog

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.

After this we add also in the map 'Wood' a item for a 'support pole' for later use with its price.

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 give here the name of the new standard template like `Plant tree`

> 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

The cost for worker which we have earlier filled in is now used.

> 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

Here we select next, after which the window [Add Material to Calculation] opens for a selection of material. We navigate to the map 'wood' where we select the 'support pole'.

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.

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 voegen nu handmatig een item toe door te klikken op de knop Item toevoegen… waarna het venster [Item creëren] opent.

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 voegen nu handmatig een item toe door te klikken op de knop `Item toevoegen…​'.

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 klikken op de knop Item toevoegen… waarna het venster [Item creëren] opent.

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.

### Creating an Acceptance of Order

The document type "Acceptance of Order" is sent subsequently to an offer.

When a client has made a request, we will send an offer in wich we describe which items we will deliver. Hopefully the client will give an order for the work.

It is a good practice to respond on the order with an "Acceptance of order" in which we describe all the items we will deliver. We can make the "Acceptance of order" on the same way as we made the invoice or the offer by selecting each item and correcting the number of delivery. This takes time and we can make errors by forgetting items or filling an incorrect number.

It can be done quicker by selecting the offer in the list and selecting Create Followup Document from either the context menu or the main menu.

We have now in documenttype the choice from:

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

We select here "Acceptance of order". We have now a copy from the offer as an Acceptance of order (do not forget to adapt Alternative Delivery items and on demand items.)

You can do this also for the creation of the invoice as a followup for Acceptance of order. Each document type has a specific list of follow up documents. It is a good practice to describe on the invoice precisely what was delivered.

## 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 | Kraft still ships with the old ReportLab based converter, but that will be deprecated the future. The WeasyPrint based system is the future. It is a recommended to port existing templates.

With WeasyPrint Kraft uses a very powerful generator that makes it very easy to create highly customized documents with great quality.

WeasyPrint converts a html file to PDF. It is integrating a cascading stylesheet (CSS) file which has a huge impact on the PDF document’s look.

The html- and CSS input file for WeasyPrint is built from the Kraft template file.

To enable the use of WeasyPrint for a document type in Kraft, simply create a weasyprint compatible template file and save it with the extension .gtmpl. Based on the file extension Kraft automatically uses WeasyPrint and the Grantlee templating engine for rendering.

From version 0.95 on Kraft ships with an example template in the Grantlee- and WeasyPrint format. It can be found at `/usr/share/kraft/reports/invoice.gtmpl` or online on Github. An example CSS file `kraft.css` (on Github) is shipped as a good starting point for adoption.

#### Sjabloon variabelen

To generate the PDF, Kraft has to transfer data from the document you have been working on to the input file that is processed to a PDF. For that, Kraft uses a text template in which Kraft replaces variables with the actual values.

For example, the tag `{{ doc.doctype }}` is replaced with the current document type during the generating process.

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

#### EPC QR Code

Kraft supports the EPC QR Code, also known as Giro Code with Weasyprint based PDF generation.

To use the giro code, the bank account information has to be added to own identity settings dialog in Kraft. The giro code is current only generated for documents with the document type `Rechnung`.

To include the generated EPC QR Code into the PDF document, the weasyprint template needs to contain a snippet like this:

        {%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]
    Creert 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.

### Using Kraft Collaboratively

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 Dokument-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.

### XRechnung Support

Kraft supports the XRechnung standard. That is a digital format for electronic invoicing, and it passed as law in Germany and follows a EU directive. The XRechnung is a XML file format designed for that purpose.

To use the XRechnung Export productivly, a little manual work is still needed in Kraft. Kraft creates the XML file based on a template, very similar to the normal PDF documents. That means that it loads a template that contains static elements (ie. the company address) that do not change between different invoices. The dynamic elements (customer data, items etc.) are filled into the template during the generation step.

In order to generate correct XRechnung files for the specific company, the user has to adopt the template file manually to the companies needs. Note that this has only to be done once and should be easy for a person with a bit computer experience (Basic knowledge about XML appreciated!).

To adapt the file to the needs of the company, it is best to start with the example XRechnung file. It has to be downloaded and saved into a location that the user can edit. Open it in a normal text editor, such as Kate.

Read carefully through the file without being scared off by the XML format. All user strings (ie. company name, address and such) are user specific and should be replaced accordingly. Find details about the format here to better understand the meaning of the fields.

Make sure to not disturb the proper XML format and do not change places where the template format `{{ template_name }}` is used.

Once the file is adopted to the needs, open the Settings dialog of Kraft and insert the filename into the entry field for the XRechnung Template File on the Document Defaults page.

After that step, the Export XRechung menu item will open a dialog to pick a filename where to save the XRechnung invoice to.

This file can now be transfered to the receiver of the invoice.

Noot | There are validators for invoices in XRechnung format out there in the internet. It is useful to verify the format of the Kraft exported XRechnung.

### Changing the Locale

If it is needed that Kraft runs under a different locale than the actual desktop environment, this can be achieved by setting the desired locale in the start file of Kraft.

On the linux desktop, apps are usually started through a so called desktop file. It contains the information how the Kraft binary is started if user clicks on the icon on the desktop or in the start menu.

The desktop file can usually be found in `/usr/share/applications/de.volle-kraft-voraus.kraft.desktop`.

It contains the line `` Exec=kraft %u` ` which starts the application with the default locale.

Changing it to `` Exec=env LANG=de_DE.UTF-8 kraft %u` ` would change that to run in the German locale for example, independent from the desktop environment location.

## Dankbetuigingen en licentie

Program and documentation copyright 2004–2022 Klaas Freitag

Documentatie auteursrecht 2020 Ronald Stroethoff