MLInvoicen käyttö

Sisällysluettelo

MLInvoicen on tarkoitus olla mahdollisimman pitkälle käytettävissä ilman ohjeitakin, mutta jotkin toiminnot kaipaavat silti tarkempaa ohjeistusta.

MLInvoice ei aseta kovin paljon rajoituksia työnkululle, mutta pyrkii varoittamaan mahdollisista ongelmista. Esimerkiksi laskun, jonka päiväys on menneisyydessä, voi lähettää uudelleen, mutta MLInvoice huomauttaa tästä.

Katso myös MLInvoicen keskustelualue, jolta voit löytää mm. vastauksia käyttäjien kysymyksiin ja keskustelua ominaisuuksista.

Perusteet

MLInvoice perustuu kolmeen pääasiaan: yritys, asiakas ja lasku. Yritys on laskuttaja, ja sen tiedot määritellään kohdassa Asetukset -> Yritykset. Asiakas on laskutettava henkilö tai organisaatio. Lasku puolestaan on keskeisin osa koko systeemissä. Lasku voi sisältää yhden tai useampia laskurivejä, jotka tarkoittavat laskutettavia yksiköitä. Laskurivien lisäämisen helpottamiseksi voidaan asetuksissa määritellä valmiita tuotteita, jolloin tuotteen valitsemalla tuodaan laskuriville sen oletustiedot.

Laskurivin teksti (tuotteen nimi ja kuvaus) tulostetaan laskulle koko palstan levyisenä, jos laskurivin lukumäärä ja hinta asetetaan nollaksi. Tätä voidaan käyttää huomautustekstien ym. tulostamiseen laskurivien yhteyteen. Välilyönnit rivin alussa säilytetään, joten niitä voi käyttää tarvittaessa rivin sisentämiseen.

Laskun tietoja voidaan käyttää myös lähetysluetteloiden ym. tekemiseen.

Asetukset

Asetukset-kohdasta löytyvät yleiset asetukset, laskuttavien yritysten ja tuotteiden tiedot sekä pohjatekstit. Yleisissä asetuksissa on monia laskutuksen toimintaan ja tulosteisiin liittyviä asetuksia. Lisäksi laskuttavien yritysten tiedoissa on monia oletustekstejä ym. Pohjatekstejä voidaan käyttää jonkin tietyn tekstin nopeaan valintaan erilaisissa tilanteissa.

Järjestelmä-kohdasta löytyvät mm. aktiiviset tulostusmallit. Oletuksena vain osa suomenkielisistä tulostusmalleista on käytössä, mutta niitä voi tarpeen mukaan aktivoida tai deaktivoida. Tulostusmalleista löytyy tulosteet myös ruotsiksi ja englanniksi.

Tekstien käännökset

Kaikkien tekstien käännökset löytyvät tiedostoista MLInvoicen lang-hakemistosta .ini-päätteisistä tekstitiedostoista. Ohjelman mukana tuleviin tiedostoihin ei kannata koskea, vaan jos on tarpeen tehdä muutoksia esim. fi-FI.ini-tiedoston sisältämiin teksteihin, tehdään lang-hakemistoon uusi tiedosto fi-FI.local.ini ja lisätään uusi tai muokattu käännös siihen.

Tulosteita koskevat tekstit löytyvät invoice- ym. alkuisista käännöstiedostoista. Vastaavasti kuin yllä, muutokset tehdään esim. invoice_fi-FI.local.ini -tiedostoon.

Esimerkki: Lisätään tiedostoon invoice_fi-FI.local.ini seuraava käännös:

  OwnTermsOfPayment = "14 vuorokautta"
  
Nyt sitä voi käyttää Maksuehdot-asetuksessa kirjoittamalla kenttään OwnTermsOfPayment.

Asiakaskohtaiset hinnat

Tuotteille voi määritellä perushintojen lisäksi asiakaskohtaiset hinnat. Asiakaskohtaisten hintojen lisääminen tapahtuu tuotelista-näytöllä valitsemalla asiakas ja klikkaamalla Määritä-painiketta. Asiakaskohtaiset hinnat voivat perustua alennusprosenttiin tai hintakertoimeen, ja niille voi määritellä voimassaoloajan. Lisäksi asiakaskohtaisten hintojen ollessa voimassa voi yksittäisten tuotteiden hintoja vielä muokata suoraan tuotelistassa.

Ensimmäinen lasku

Ensimmäisen laskun luomiseksi voi seurata vaikka tätä listaa:

  1. Tarkista yleiset asetukset (Asetukset -> Yleiset asetukset). Oletukset on pyritty tekemään järkeviksi, mutta esim. maksuaikaa tai maksuehtoja voi joutua muuttamaan. Asetuksia voi muokata vain ylläpitäjän oikeuksilla.
  2. Lisää uusi yritys (Asetukset -> Yritykset)
  3. Lisää pari tuotetta (Asetukset -> Tuotteet)
  4. Lisää uusi asiakas
  5. Lisää uusi lasku, tallenna se ja lisää muutama laskurivi
  6. Lasku on nyt valmis tulostettavaksi tai lähetettäväksi sähköpostilla

Saatujen laskujen käsittely

Saadut laskut kannattaa yleensä siirtää arkistoon, jotta ne eivät jää roikkumaan laskulistalle. Arkistoidut laskut löytyvät Arkisto-kohdasta, ja niitä voi käsitellä ihan samalla tavalla kuin muitakin laskuja. Tavallinen työnkulku saadun laskun kohdalla on merkitä sen tila maksetuksi, lisätä maksupäivä ja laittaa rasti Arkistoitu-kohtaan. Yleisistä asetuksista löytyy asetus, jonka perusteella lasku voidaan merkitä automaattisesti maksetuksi ja arkistoiduksi, kun sille syötetään maksupäivä.

Toistuvat laskut

Jos laskulle annetaan toistuvuus ja seuraavan laskun aika, MLInvoice ilmoittaa päänäytöllä, kun lasku tarvitsee käsittelyä seuraavan kerran. Tällöin siitä voidaan luoda kopio, ja toistuvuustiedot päivitetään automaattisesti (vanhalta laskulta toistuvuus pois, uudelle toistuvuus ja uusi seuraavan laskun päivämäärä toistuvuuden mukaisesti).

Tarjoukset

Tarjoukset näyttävät hyvin pitkälle samanlaisilta kuin laskut, mutta niissä on eri tulosteet ja hieman eri kentät. Ne näkyvät etusivulla omassa kohdassaan eikä niitä oteta oletuksena mukaan laskutusraportteihin, mutta ne voidaan huomioida valitsemalla raportissa tarjouksiin liittyvät tilat.

Jos tarjouksia halutaan tilastoida erikseen, kannattaa huolehtia siitä, että tarjouksia ei koskaan poisteta, vaan merkitään vain toteutuneeksi tai toteutumattomaksi ja siirretään arkistoon.

Tietojen poistaminen

Tageja ja asiakaskohtaisia hintoja lukuunottamatta tietojen poistaminen MLInvoicessa ei tarkoita sitä, että tiedot häviäisivät tietokannasta. Poistetut tietueet vain merkitään poistetuiksi. Ylläpitäjän oikeuksilla voi käydä laittamassa yleisistä asetuksista istunnon ajaksi päälle asetuksen "Näytä poistetut tietueet", jolloin poistetutkin tiedot näkyvät listoissa. Poistetun tiedon tallentaminen uudelleen palauttaa sen takaisin käyttöön. Näin tietojen katoamisen riski on mahdollisimman pieni. Huom! Vaikka tämä turvaa tietojen poistamiselta epähuomiossa, tallennettuja muokkauksia ei voi perua.

Laskujen lähettäminen sähköpostilla

MLInvoice tukee laskujen lähettämistä suoraan sähköpostilla, jolloin lasku-PDF lähetetään viestin liitteenä. Tämä edellyttää, että palvelimen PHP-asennus pystyy lähettämään sähköpostia. Sähköpostin lähettämiseksi ei ole pakko tehdä mitään sen kummempaa kuin painaa laskun tiedoissa sähköposti-nappulaa. On kuitenkin hyödyllistä laittaa yrityksen tietoihin valmiiksi sähköpostin lähetykseen liittyvät tiedot, jotta niitä ei tarvitse kirjoittaa aina uudelleen.

Sähköpostitoiminnoissa osoite-kenttiin voi kirjoittaa joko pelkän sähköpostiosoitteen tai nimen ja osoitteen muodossa

Vastaanottajan nimi <osoite@esimerkkiosoite.fi>

Piilokopio-osoitteen avulla voi jokaisen laskun lähettää myös itselleen, jolloin jokaisesta lähetetystä laskusta jää kopio arkistoitavaksi ja voi varmistua siitä, että viesti ainakin lähti.

Kaikissa sähköpostin vastaanottaja-kentissä voi olla myös useampia vastaanottajia pilkulla eroteltuina.

Yrityksen tiedoissa sähköpostin aiheessa ja viestissä voidaan käyttää ns. paikanpitäjiä, jotka korvataan sähköpostin lähetysvaiheessa oikeilla tiedoilla vastaanottajasta tai laskusta. Paikanpitäjät merkitään kaarisulkuihin tähän tapaan:

Lasku {invoice:invoice_no}
Hei,

Ohessa on lasku PDF-muodossa. Tämä on järjestelmästä automaattisesti lähetetty
viesti, johon voi kuitenkin vastata, jos laskusta on kysyttävää tai huomautettavaa.

Voitte maksaa laskun suoraan allaolevilla tiedoilla. Käyttäkää aina viitenumeroa maksaessanne.

Laskun numero                 {invoice:invoice_no}
Arvonlisäveroton osuus        {invoice:totalsum}
 + ALV                        {invoice:totalvat}
----------------------------------------------------------
Loppusumma yhteensä           {invoice:totalsumvat}


Tilinumero                    {sender:bank_iban}
BIC                           {sender:bank_swiftbic}
Eräpäivä                      {invoice:due_date}
Viitenumero                   {invoice:ref_number}

Virtuaaliviivakoodi           {invoice:barcode}

Ystävällisin terveisin,
Yritys

PDF-linkin lähettämiseksi sähköpostilla on suositeltavaa tehdä se niin, että jokin erillinen osoite ohjataan www-palvelimen asetuksissa osoittamaan MLInvoicen invoice.php:hen. Osoite voisi olla esim. https://firma.jotain/show_doc. Näin varsinainen MLInvoice-asennus voidaan pitää erillään asiakkaalle lähetettävästä linkistä. MLInvoicen mukana tulevassa .htaccess -tiedostossa on yksinkertainen esimerkki, joka ohjaa MLInvoicen hakemiston alla olevan docs/open_doc -osoitteen, mutta sitä ei suositella tuotantokäyttöön. Luonnollisesti tämän asiakkaille annettavan osoitteen tulee olla webistä avoimesti saavutettavissa, vaikka muu osa MLInvoice-asennuksesta olisi esim. IP-rajauksella suojattu.

Kun ylläolevan kuvauksen kaltainen osoite on käytettävissä, määritetään se yleisistä asetuksista löytyvään kohtaan "Asiakkaille tarkoitetun PDF-tiedostolinkin muoto". Sitten otetaan käyttöön tulostusmalli "Sähköposti ilman liitetiedostoa". Lisäksi määritellään pohjateksti, johon linkki tulee paikanpitäjällä {invoice:pdf_link}. Tämän jälkeen voidaan laskun tiedoissa valita "Sähköposti ilman liitetiedostoa" ja sopiva pohjateksti. Jos kaikki laskut lähetetään näin, voi tekstin toki laittaa valmiiksi suoraan laskuttajan tietoihin.

Hyvin yksinkertainen esimerkki pohjatekstistä:

Hei,

teille on uusi lasku, jonka loppusumma on {invoice:totalsumvat}.
Lasku PDF-muodossa on ladattavissa osoitteesta: {invoice:pdf_link}

Ystävällisin terveisin,
Firma

Tekstiin voi toki sisällyttää laskun muutkin perustiedot paikanpitäjillä. PDF-linkki on voimassa 90 vuorokautta.

Pohjatekstit

Laskun tiedoissa ja sähköpostiviesteissä voidaan käyttää valmiita pohjatekstejä. Pohjatekstit määritellään Asetukset-kohdassa. Pohjatekstin tyypistä riippuu, missä se näytetään. Pohjatekstejä voi käyttää kentissä, joiden oikealla puolella näkyy pieni nuoli alaspäin. Pohjateksteissä voi käyttää paikanpitäjiä.

Sähköposti-tyyppisessä pohjatekstissä voi lisäksi määritellä muiden kenttien arvoja sähköpostin lähetystä varten. Nämä arvot lisätään Lisätiedot-kenttään, yksi per rivi kaksoispisteellä eroteltuina. Käytettävissä olevat arvot ovat:

Arvo Sisältö
From Lähettäjän sähköpostiosoite
CC Osoitteet, joihin lähetetään kopio viestistä niin, että vastaanottaja näkee sen
BCC Osoitteet, joihin lähetetään piilokopio viestistä. Varsinainen vastaanottaja ei näe piilokopioiden vastaanottajia.
Subject Viestin otsikko

Esimerkki

From: Lasse Laskuttaja <lasse@labs.fi>
CC: Laskun Käsittelijä 1 <lasku1@labs.fi>, Laskun käsittelijä 2 <lasku2@labs.fi>
BCC: arkisto@labs.fi
Subject: Lasku {invoice:invoice_no} on erääntynyt

Paikanpitäjät

Paikanpitäjiä voidaan käyttää sähköpostien aihe- ja sisältökentissä sekä alku- ja loppusanoissa. Niitä voidaan hyödyntää esim. tarjouksen alkuteksteissä tähän tapaan:

Re: tarjouspyyntönne 1.1.2017 {recipient:company_name}/{contact:contact_person}.
Kiitos tarjouspyynnöstänne. Tarjoamme tuotteitamme seuraavasti:

Paikanpitäjinä voidaan käyttää kaikkia kyseisten tietokannan taulujen sarakkeita (lähettäjä=base, vastaanottaja=company, lasku=invoice, asetukset=config, contact=ensimmäinen oikeantyyppinen kontakti, contacts=oikeantyyppiset kontaktit) ja lisäksi laskun kokonaissummaan liittyviä tietoja.

contacts-tyyppisille paikanpitäjille voidaan määritellä vielä erotinmerkki, jolla useampi sopiva tieto yhdistetään, esim.

Re: tarjouspyyntö {invoice:invoice_date} {recipient:company_name}/{contacts:contact_person:, }

Tässä olennaisimmat paikanpitäjät:

Paikanpitäjä Sisältö
{sender:name} Lähettäjän nimi
{sender:contact_person} Lähettäjän yhteyshenkilö
{sender:street_address} Lähettäjän katuosoite
{sender:zip_code} Lähettäjän postinumero
{sender:city} Lähettäjän kaupunki
{sender:country} Lähettäjän maa
{sender:phone} Lähettäjän puhelinnumero
{sender:www} Lähettäjän www-osoite
{sender:email} Lähettäjän sähköpostiosoite
{sender:company_id} Lähettäjän Y-tunnus
{recipient:company_name} Vastaanottajan nimi
{recipient:contact_person} Vastaanottajan yhteyshenkilö
{recipient:street_address} Vastaanottajan katuosoite
{recipient:zip_code} Vastaanottajan postinumero
{recipient:city} Vastaanottajan postitoimipaikka
{recipient:country} Vastaanottajan maa
{recipient:phone} Vastaanottajan puhelinnumero
{recipient:email} Vastaanottajan sähköposti
{recipient:gsm} Vastaanottajan matkapuhelin
{recipient:billing_address} Vastaanottajan laskutusosoite
{recipient:company_id} Vastaanottajan Y-tunnus
{recipient:customer_no} Vastaanottajan asiakasnumero
{invoice:name} Laskun nimi
{invoice:invoice_no} Laskun numero
{invoice:invoice_date} Laskun päivämäärä
{invoice:due_date} Laskun eräpäivä
{invoice:printout_type} Tulosteen tyyppi pienillä kirjaimilla (esim. "lasku", "lähetysluettelo")
{invoice:printout_type_caps} Tulosteen tyyppi isolla alkukirjaimella (esim. "Lasku", "Lähetysluettelo")
{invoice:ref_number} Laskun viitenumero
{invoice:reference} Laskun viiteteksti
{invoice:info} Laskun lisätietokenttä
{invoice:totalsum} Laskun loppusumma ilman ALV:ia
{invoice:totalvat} Laskun ALV:n kokonaismäärä
{invoice:totalsumvat} Laskun loppusumma sisältäen ALV:n
{invoice:barcode} Laskun viivakoodi numeromuodossa ("virtuaaliviivakoodi")
{invoice:pdf_link} Linkki PDF-tiedostoon yleisissä asetuksissa määritetyn mallin mukaisesti. Ks. lisätiedot kohdasta PDF-linkin lähettäminen sähköpostilla.
{config:invoice_terms_of_payment} Laskun maksuehdot ("xx pv netto")
{config:invoice_period_for_complaints} Laskun huomautusaika ("7 päivää")
{config:invoice_penalty_interest} Laskun viivästyskorko
{config:invoice_notification_fee} Laskumuistutuksesta perittävä maksu
{contact:contact_person} Ensimmäisen oikeantyyppisen kontaktin yhteyshenkilö
{contact:person_title} Ensimmäisen oikeantyyppisen kontaktin yhteyshenkilön titteli
{contact:email} Ensimmäisen oikeantyyppisen kontaktin sähköpostiosoite
{contact:phone} Ensimmäisen oikeantyyppisen kontaktin puhelinnumero
{contact:gsm} Ensimmäisen oikeantyyppisen kontaktin matkapuhelinnumero
{contacts:contact_person:erotinmerkki} Oikeantyyppisten kontaktien yhteyshenkilöiden nimet
{contacts:person_title:erotinmerkki} Oikeantyyppisten kontaktien yhteyshenkilöiden tittelit
{contacts:email:erotinmerkki} Oikeantyyppisten kontaktien sähköpostiosoitteet
{contacts:phone:erotinmerkki} Oikeantyyppisten kontaktien puhelinnumerot
{contacts:gsm:erotinmerkki} Oikeantyyppisten kontaktien matkapuhelinnumerot
{var:date} Päivämäärä tulostushetkellä
{var:datetime} Päivämäärä ja kellonaika tulostushetkellä

Finvoice-laskut

MLInvoicessa on mahdollisuus tehdä lasku Finvoice-muodossa (Finvoice versio 2.01), jolloin sen voi lähettää verkkolaskutusoperaattorin kautta suoraan vastaanottajalle.

Huom! Finvoice-toiminnallisuuden käyttämiseksi tarvitaan PHP:n DOM/XML- ja XSL-moduulit.

Finvoice-laskutuksen myötä on yritystietoihin ja asiakastietoihin lisätty OVT-tunnus, jota käytetään osapuolten tunnistamiseen verkkolaskutuksessa.

Oletuksena Finvoice-laskut ovat pois käytöstä, eli ne täytyy käydä ottamassa käyttöön kohdasta Järjestelmä -> Tulostusmallit. Finvoice Styled -malli näyttää xml:n selaimessa tyylitiedoston avulla, ja pelkkä Finvoice ohjaa selaimen tallentamaan XML-tiedoston. XML:t validoidaan luonnin yhteydessä, ja jos välttämättömiä tietoja puuttuu tms. niin siitä tulee virheilmoitus (jonka ulkoasu on ainakin toistaiseksi melko karu).

Suoraa lähetysyhteyttä operaattorien rajapintojen kautta ei toistaiseksi ole toteutettu, vaan Finvoice-tiedoston lähetys täytyy tehdä erikseen sen luomisen jälkeen.

Varsinainen Finvoice-xml luodaan create_finvoice.xsl -tiedoston mukaan, eli sille annetaan lähettäjän, vastaanottajan ja laskun tiedot ja asetukset, joista se rakentaa lopullisen xml:n. Näin sitä voi tarvittaessa muokata tai mekanismia käyttää muunlaisten xml:ien tuottamiseen.

Tagit

MLInvoicessa voi antaa asiakkailla ja asiakkaiden kontakteille tageja esim. luokittelua varten. Toistaiseksi tageilla ei kuitenkaan voi tehdä juuri mitään, mutta SQL-kyselyissä niitä voi käyttää. Käyttöön on monta tapaa, mutta alla pari mallikyselyä:

Laskun/tarjouksen tilat

Järjestelmä-kohdasta löytyvät laskun/tarjouksen tilat määrittelevät, miten lasku tai tarjous, joka on ko. tilassa, käyttäytyy. Esim. keskeneräiseksi määritellyssä tilassa olevat tietueet näytetään aina aloitusnäytöllä. Oletuksena esim. toteutuneita tarjouksia ei näytetä aloitusnäytöllä, mutta muuttamalla Toteutunut tarjous -tila keskeneräiseksi se tulee näkyviin.

Järjestelmä-kohdasta löytyvät tulostusmallit määrittelevät, mitä tulosteita on käytettävissä. Osa tulosteista, esim. ruotsin- ja englanninkieliset, ovat oletuksena pois käytöstä. Tulostusmallien tiedoissa voi myös määritellä, avataanko tuloste uudessa ikkunassa, ja tiedoston oletusnimen, jossa voi käyttää paikanpitäjiä.

Huom! Tämä kohta sisältää tietoa, josta on hyötyä lähinnä PHP-kieltä osaaville.

MLInvoicen tulostusmallien hallinta on suunniteltu niin, että omien tulostusmallien lisääminen on mahdollista alkuperäistä koodia muuttamatta. Järjestelmätiedoissa tulostusmalleissa voidaan poistaa tai lisätä omia tulostusmalleja. Tulostusmallit määrittelevät myös, mitkä tulostusnappulat näytetään laskulomakkeella.

Uuden tulostusmallin pohjan voi kopioida invoice_printer.php:sta ja muokata sitä tarpeen mukaan. Kannattaa myös tutustua siihen, miten invoice_printer_email.php korvaa osan normaalista pdf-tulostuksesta (invoice_printer_base.php) sähköpostinlähetystoiminnoilla. Yleisellä tasolla tulostus tapahtuu seuraavasti:

  1. Ladataan tulostusmallin määrittelemä tulostusluokka
  2. Kutsutaan luokan init-metodia, joka tekee tarvittavat alustukset
  3. Kutsutaan luokan printInvoice-metodia, joka suorittaa varsinaisen tulostuksen

Oletustulostusmalli print_invoice_base.php on jaettu osiin, joista jokainen vastaa tietystä kohdasta laskun tulostuksessa. Tämän tarkoituksena on mahdollistaa oman muokatun laskulomakkeen toteutus mahdollisimman vähällä vaivalla, eli perimällä InvoicePrinterBase-luokka ja ylikuormittamalla tarvittavat metodit.

Huomaa, että InvoicePrinterBase-luokan printInvoice-metodi saattaa kutsua itseään toisen kerran, jos käy niin, että laskurivit eivät mahdu niille varattuun tilaan, vaan on luotava erillinen laskuerittely.

Vaiheet uuden tulostusmallin tekemiseksi

Tässä esimerkissä luodaan uusi tulostusmalli, joka tulostaa vähemmän tietoja asiakkaasta. Samalta pohjalta voidaan muokata myös muita tulostusmalleja.

  1. Kopioi invoice_printer.php uudelle nimelle, tässä esimerkissä invoice_printer_oma.php
  2. Muuta luokan nimi vastaamaan tiedoston nimeä (ilman alaviivoja, mutta sanat isolla)
  3. Kopioi invoice_printer_base.php:sta printRecipient()-funktio sisältöineen invoice_printer_oma.php:hen. Pitäisi näyttää tällaiselta:
    <?php
    
    require_once 'invoice_printer_base.php';
    
    class InvoicePrinterOma extends InvoicePrinterBase
    {
      protected function printRecipient()
      {
        $pdf = $this->pdf;
        $recipientData = $this->recipientData;
    
        $pdf->SetTextColor(0);
        $pdf->SetFont('Helvetica','B',14);
        $pdf->setX($pdf->GetX() + $this->addressXOffset);
        $pdf->Cell(120, 6, $this->recipientName, 0, 1);
        $pdf->SetFont('Helvetica','',14);
        $pdf->setX($pdf->GetX() + $this->addressXOffset);
        $pdf->MultiCell(120, 6, $this->recipientAddress, 0, 1);
        $pdf->SetFont('Helvetica','',12);
        if ($recipientData['email'])
        {
          $pdf->SetY($pdf->GetY() + 4);
          $pdf->setX($pdf->GetX() + $this->addressXOffset);
          $pdf->Cell(120, 6, $recipientData['email'], 0, 1);
        }
    
        $this->recipientMaxY = $pdf->GetY();
      }
    }
        
  4. Muokkaa printRecipient-funktion sisältö haluamaksesi. Tässä jätetään osoite ja sähköpostiosoite pois:
    <?php
    
    require_once 'invoice_printer_base.php';
    
    class InvoicePrinterOma extends InvoicePrinterBase
    {
      protected function printRecipient()
      {
        $pdf = $this->pdf;
        $recipientData = $this->recipientData;
    
        $pdf->SetTextColor(0);
        $pdf->SetFont('Helvetica','B',14);
        $pdf->setX($pdf->GetX() + $this->addressXOffset);
        $pdf->Cell(120, 6, $this->recipientName, 0, 1);
    
        $this->recipientMaxY = $pdf->GetY();
      }
    }
        
    Huom! Viimeisellä rivillä oleva recipientMaxY kertoo seuraaville toimenpiteille, mihin asti käyttäjätietojen tulostus vaati tilaa, jotta esim. laskurivit alkavat sopivasta kohdasta.
  5. Kirjaudu sisään MLInvoiceen ja mene kohtaan Järjestelmä -> tulostusmallit.
  6. Avaa Lasku-tulostusmalli ja tee siitä kopio.
  7. Vaihda tulostusmallin nimi kuvaavaksi ja Tiedosto-kohtaan invoice_printer_oma.php.
  8. Tallenna tiedot. Kunhan Pois käytöstä -kentässä ei ole rastia, tulee uusi nappula näkyviin laskulomakkeelle.
  9. Testaa lopputulos jollain laskulla ja säädä lisää tarvittaessa.