Eventueel ingestelde menu-setprijzen worden automatisch toegepast. Dit is via een instelling in Mpluskassa uit te schakelen. Als je deze instelling uitschakelt, dan krijg je bij het openen van de tafel op de kassa de vraag of en welke menu's je wil samenstellen.
Menu-informatie wordt nu ook aan artikelregels toegevoegd. Kan gebruikt worden om te zien dat een artikelregel onderdeel is van een groter menu. De gebruikte eigenschappen zijn menuHash
(unieke waarde per menu-combinatie), menuDescription
(toonbare omschrijving van het menu), menuAmount
(totaalbedrag van dit artikel binnen de menu-combinatie).
Bij het opslaan van geretourneerde regels via saveTableOrder
wordt nu ook altijd de "reden retour" ingevuld zodat dat goed kan worden uitgelezen in de overzichten.
Attentie: Deze release is teruggetrokken vanwege een bug in de bugfix in payTableOrder
in deze release.
Attentie: Deze release is teruggetrokken vanwege een probleem met het betalen van een splitsing.
Attentie: Deze release is teruggetrokken vanwege verkeerd ingevulde compatibilteit met databaseschema.
Attentie: Deze release is teruggetrokken vanwege verkeerd ingevulde compatibilteit met databaseschema.
Als er via de API al samengestelde artikelen aan een regel zijn toegevoegd, dan zullen die niet nogmaals door de API worden toegevoegd. Hiermee voorkomen we situaties waarin zowel de API samengestelde artikelen definieert, als dat deze ook worden toegevoegd omdat ze in Mplus ook op de artikelkaart staan.
Dit lost het probleem met EasyReservation op, die gebruik maakt van samengestelde artikelen voor het netjes doorgeven van arrangementen.
Indien een BTW-percentage voor een bepaalde BTW-code niet goed is geconfigureerd in Mplus geeft de API nu de volgende foutmelding: The rate for VAT-code 2 is not properly configured. Please contact API support at dev@mpluskassa.nl.
Hiermee voorkomen we dat mensen dit over het hoofd zien en klakkeloos foute of ontbrekende BTW-percentages worden overgenomen door API-ontwikkelaars.
getCashCountList
vereist nu een WorkplaceYearNumber
in plaats van een YearNumber
als de derde, optionele parameter. Dit is zonder backwards-compatibility toegevoegd, omdat enkel een jaar en nummer niet uniek is voor alle kastellingen, en dus nooit goed is.
De functie getArticleGroups
retourneert nu per artikelgroep ook een lijst van alle productnummers die in die groep zitten.
Versnelde implementatie van getReceipts
toegevoegd.
De functie payOrder
met eigenschap prepay = TRUE
ondersteunt nu ook een gedeeltelijke aanbetaling.
Nieuwe functie setStock
die een absolute waarde voor de voorraad accepteert.
De parameter dataType
van het object CustomField
is nu optioneel. Bij het opsturen naar de API hoef je deze niet per se op te geven, want in de database is bekend welk type deze velden hebben.
Het object Article
bevat nu ook changeTimestamp
en createTimestamp
die respectievelijk aangeven wanneer een artikel voor de laatste keer is gewijzigd en wanneer het is aangemaakt.
Als je geen productNumber
meegeeft aan een aanroep van updateProduct
, zal nu geprobeerd worden het juiste productNumber
te bepalen aan de hand van de meegegeven articleNumber
s.
Het aantal kassabonnen dat getReceipts
teruggeeft als je zoekt vanaf een bepaald syncMarker
is nu ook configureerbaar via de parameter --sync_marker_limit
. Standaardwaarde is 1000.
getActiveEmployeeList()
retourneert nu per medewerker ook de volgende autorisatie-opties: allowNextCourse
, allowSplit
en allowPay
.
Relation
bevat nu ook de eigenschap relationCode
waarmee het veld relatiecode
van de relatiekaart ingelezen en gemanipuleerd kan worden. Maximale lengte van dit veld is 128 alfanumerieke karakters.
Het Transaction
object bevat nu ook de eigenschap extBranchId
.
Het VatGroup
object bevat nu ook de eigenschap extBranchId
.
De Order
, Invoice
en Receipt
objecten bevatten nu ook de volgende eigenschappen: entryExtBranchId
en financialExtBranchId
.
Het Payment
object in een paymentList
bevat nu ook de eigenschappen entryTimestamp
, branchNumber
, extBranchId
, workplaceNumber
, employeeNumber
en employeeName
.
getProducts()
ondersteunt nu ook de onlyActive
parameter. Wanneer deze op TRUE
staat, worden alleen de actieve artikelen geretourneerd.
getTerminalSettings()
retourneert nu ook unknownTableAction
. Deze eigenschap geeft aan wat er gedaan moet worden als er een onbekende tafel gekozen wordt.
allowTableRetour
toegevoegd aan EmployeeName
Bij het aanroepen van getJournals()
, getFinancialJournal()
en getFinancialJournalByCashCount()
wordt nu altijd opgeslagen welke data gediend heeft als bron voor het antwoord. Eventueel kan de aanvrager een eigen referentie meegeven.
Nieuwe functie requestTableOrderCourse()
waarmee een gewenste gang voor een bepaalde tafel kan worden uitgevraagd.
payInvoice()
geeft nu goed aan als een betaling niet kan worden uitgevoerd omdat de gewenste betaalwijze is uitgeschakeld.
Nieuwe functie logMistake()
die gebruikt kan worden om een foutaanslag op bijv. een handheld te registreren.
Nieuwe functie getTableOrderCourseList()
waarmee voor een bepaald filiaal- en tafelnummer de op dat moment aanwezige en uitgevraagde gangen kunnen worden opgevraagd.
Gangen hebben nieuwe eigenschappen: sequenceNumber
, isPresent
en isRequested
.
Nieuwe functie getCardCategories
waarmee de categorieën van de artikel-, relatie- en medewerkerkaarten opgevraagd kunnen worden. Bij relaties gaat het bijvoorbeeld om de categorieën "Klant" en "Leverancier".
De BPE-informatie (Breuk/Promotie/Eigen gebruik) wordt nu ook aan artikelregels meegegeven. Zo kan er onderscheid gemaakt worden tussen echte korting en "korting" vanwege BPE. De gebruikte eigenschappen zijn bpeId
(interne identificatie), bpeDescription
(toonbare omschrijving), bpeAmount
(bedrag incl. BTW), bpeAmountExcl
(bedrag excl BTW).
Nieuwe API-functie getWordAliases
die ingestelde woordaliassen kan teruggeven. Kan bijvoorbeeld gebruikt worden om een woord altijd te vertalen naar een ander woord, zoals "Klant" naar "Gast".
Bij het opvragen van factuurinformatie wordt nu ook evt. meegegeven of de factuur vergrendeld is (finalized
) en wanneer (finalizedTimestamp
).
Bij het versturen van een bericht via sendMessage
kan nu ook de sender
en messageType
worden meegegeven. Kies uit OK
, INFO
of WARNING
.
Bij het opvragen van een kastelling via getCashCountList
wordt nu ook het rekeningnummer waarop het kasverschil wordt gestort teruggegeven via de parameter differenceAccountNumber
. Ook wordt het rekeningnummer van de afstortrekening teruggegeven via de parameter depositAccountNumber
.
Je kunt nu ook de parameter sinceCashCountNumber
invullen om alle kastellingen sinds een bepaalde kastelling op te vragen.
De functie getJournals
retourneert nu per betalingswijze ook het betalingswijzesoort, zoals: "BETAAL", "EFT", "TUSSEN", "AFSTORT", "BPE".
De finalizeInvoices
parameter kan worden toegevoegd aan een getInvoices
aanvraag om de facturen die opgehaald zijn te vergrendelen. Gebruik dit wanneer de facturen eenmalig geëxporteerd dienen te worden naar een extern systeem, zoals een boekhoudpakket. Het voorkomt namelijk dat de factuur daarna nog verder gewijzigd kan worden in de kassa.
Bij het opvragen van het versienummer van de API via getApiVersion
wordt nu ook de ingestelde datum van de API-server teruggegeven via de parameter serverDate
. Dit kan gebruikt worden om externe apparaten te synchroniseren met de server.
Bij het opvragen van kastellingen via getCashCountList
wordt nu ook de eerste en laatste id's van de achterliggende kassabonnen meegegeven, via de eigenschappen shiftFirstReceiptId
en shiftLastReceiptId
. Daarnaast bevat de eerste en laatste transactie (shiftFirstTransaction
en shiftLastTransaction
) nu ook het transactielabel via de eigenschap transactionString
.
Attentie: Deze release werkt wel met het juiste databaseschema, in tegenstelling tot de teruggetrokken v1.7.7.2 die per ongeluk op een versie te ver was uitgegeven.
De volgende objecten bevatten nu ook het extBranchId
(externe referentie voor het filiaal):
Branch
, CashCount
, Journal
, FinancialGroup
en Shift
.
De API-functie getEmployees
kan nu ook worden gebruikt met een syncMarker
. Lees de Sync Marker Tutorial (Engels) voor een uitgebreide uitleg.
De API-functie getTurnoverGroups
retourneert nu ook de ingestelde externe rekeningnummers per filiaal, via de lijst branchAccountNumberList
.
API-functies die werken met betaalwijzen per filiaal, zoals getFinancialJournal
en getFinancialJournalByCashCount
, retourneren nu ook het juiste rekeningnummer in het veld accountNumber
als deze afwijkt van het standaard rekeningnummer.
API-functies die werken met omzetgroepen per filiaal, zoals getFinancialJournal
en getFinancialJournalByCashCount
, retourneren nu ook het juiste rekeningnummer in het veld accountNumber
als deze afwijkt van het standaard rekeningnummer.
Wanneer een API-functie wordt gebruikt met klantvelden (zoals createProduct
, createRelation
of createEmployee
) en de klantvelden zijn verplicht, maar deze worden niet meegegeven en hebben ook geen standaardwaarde, dan wordt er een duidelijke foutmelding teruggegeven.
getFinancialJournal
geeft nu ook aan of de periode waarover een financieel journaal is aangevraagd al officieel is afgesloten, door middel van het veld financialPeriodClosed
. Het kan namelijk voorkomen dat een boekingsdag pas afloopt om 6 uur 's ochtends, in plaats van exact middernacht.
Medewerkers kunnen nu ook per stuk opgehaald worden via getEmployee
, daarnaast worden daarbij nu ook de klantvelden (de customFieldList
) en de volgende standaardvelden meegegeven: syncMarker
, changeTimestamp
, createTimestamp
, extraText
, categoryId
, personNumber
.
Bij het ophalen, invoeren en bewerken van relaties kan nu gewerkt worden met klantvelden (de customFieldList
) en de volgende standaardvelden: createTimestamp
, bankAccountNumber
, creditLimit
, paymentWithinDays
, vatNumber
, commerceNumber
, extraText
, defaultVatMethod
, neverPrintOrEmailReceipt
, alwaysPrintReceipt
, alwaysPrintLargeFormatReceipt
, alwaysEmailReceipt
, condenseCombinedInvoice
.
Wanneer de klant gebruik maakt van een Master/Slave opstelling is het nu mogelijk om een wachttijd in te stellen waarin de functie saveOrder
zal wachten totdat de Slave een filiaalorder heeft gesynchroniseerd. Standaard staat deze wachttijd op 0 seconden. In dat geval wordt er helemaal niet gewacht wordt. Er is ook een bovenlimiet van 5 minuten.
Aan het resultaat kun je aflezen of de order al naar de Slave gesynchroniseerd is. Als de parameter orderQueued
op TRUE
staat, moet de order nog gesynchroniseerd worden, als deze op FALSE
staat is hij al gesynchroniseerd en kun je ervan uitgaan dat de Slave de order ontvangen heeft.
De functionaliteit van queueBranchOrder
is nu gecombineerd met saveOrder
. De API-ontwikkelaar hoeft er daardoor niet meer voor te zorgen of de juiste functie wordt aangeroepen afhankelijk van of de kassa wel of niet een slave-kassa is. Indien de order in de wachtrij voor een slave-kassa geplaatst is, zal er een speciaal vlaggetje orderQueued
op TRUE
gezet worden.
Indien er een foutmelding terugkomt waarin staat dat de gebruiker van de API contact op moet nemen met API Support staat daar nu ook het juiste e-mailadres in, namelijk dev@mpluskassa.nl
.
Een aantal parameters van Line
zijn optioneel gemaakt, namelijk: lineId
, employeeNumber
, pluNumber
, en lineType
. Bij het weglaten van deze parameters worden de standaardwaardes van het bijbehorende artikel gebruikt.
Nieuwe functie queueBranchOrder
toegevoegd om filiaalorders toe te voegen op een API die aan een master/slave-configuratie gekoppeld zit.
Het is nu mogelijk om via payOrder
een aanbetaling van een verkooporder ongedaan te maken. Dit is mogelijk door het doen van een aanbetaling met het exacte negatieve bedrag.
Een aantal parameters van LineData
zijn optioneel gemaakt, namelijk: turnoverGroup
, vatCode
, vatPercentage
, pricePerQuantity
en siUnit
. Bij het weglaten van deze parameters worden de standaardwaardes van het bijbehorende artikel gebruikt.
Bij het beheren van orders via de API wordt nu ook gekeken naar vatCode
en turnoverGroup
voor eventueel afwijkende waarden. Houd hier rekening mee met het aanmaken en bijwerken van orders via de API.
Nieuwe functie getCurrentSyncMarkers
die de meest recente waardes van de verschillende syncMarker
s retourneert.
getReceipts
en getInvoices
retourneren nu ook de volgende artikeleigenschappen: supplierRelationNumber
(relatienummer leverancier), supplierRelationName
(naam leverancier) en supplierArticleNumber
(artikelnummer leverancier). Het is ook mogelijk om te filteren op relatienummer leverancier door middel van supplierRelationNumbers
.
De functie getFinancialJournalByCashCount
werkt nu weer. Deze was een tijdje uitgeschakeld omdat kastellingen tegenwoordig ook voor meerdere werkplekken tegelijk kunnen gelden, en de implementatie in de API service was daar nog niet op aangepast. De functie is nu ook verbeterd, omdat nu ook echt alleen het financiaal journaal van het filiaal waarop de telling betrekking had geretourneerd wordt.
Bij het opgeven van het opstartargument --debug
moet je nu ook direct de locatie van het logbestand erachter zetten. Het debug-bestand wordt dus niet meer standaard naar logs/debug.txt
weggeschreven.
De API geeft nu elke tien minuten een statusmelding in het logbestand waarin staat op welke poort de API draait en òf en met welke database de API verbonden is.
Voorbeelden:
API Service running on port 18083 and connected to database qline@127.0.0.1
API Service running on port 18083 and NOT connected to database qline@127.0.0.1
Bij het afrekenen van een afsplitsing via payTableOrder
werd de nieuwe bestelling met daarin de afsplitsing niet goed opgeslagen, waardoor de API een foutmelding teruggaf. Hier liep vooral de Android Kassa tegenaan.
Bij het afrekenen van een afsplitsing via payTableOrder
werd de nieuwe bestelling met daarin de afsplitsing niet goed opgeslagen, waardoor de API een foutmelding teruggaf. Hier liep vooral de Android Kassa tegenaan.
Dit is een speciale bugfix release, die de volgende problemen oplost:
Het zipbestand met daarin het installatiescript voor de Mplus API Service is aangepast.
Je moet nu vòòr de eerste installatie een keuze maken tussen de configuratie voor 32-bits of 64-bits systemen.
install.bat
detecteert automatisch of de keuze gemaakt is en zal anders de volgende foutmelding tonen:
. ===================================================
.
. Installatie mislukt
. -------------------
.
. U moet nog de juiste winsw.xml kiezen.
. Hernoem winsw-x86.xml of winsw-x64.xml naar winsw.xml,
. afhankelijk van uw besturingssysteem.
.
. ===================================================
Versnelde implementatie van getReceipts
, welke niet alleen veel sneller is dan de oude implementatie, maar ook een gelimiteerd aantal kassabonnen teruggeeft, om geheugenproblemen te voorkomen.
getTableList()
retourneert nu ook de informatie over de hoogst uitgevraagde gang van elke tafel, dit gebeurt via de eigenschappen courseNumber
, courseName
en courseAbbreviation
.
getJournals
kan nu aangeroepen worden zonder filiaalfilter. In dat geval worden alle aanwezige filialen geretourneerd.
Bij het aanmaken van een relatie wordt het meegegeven relationNumber
nu ook gebruikt als relatienummer voor de nieuwe relatie, in plaats van het genereren van een nieuw relatienummer.
Het is nu mogelijk om het pasnummer in te vullen en bij te werken via createRelation
en updateRelation
. Het veld heet cardNumber
.
Als er tijdens het afdrukken van een bon, verkooporder of andere printopdracht een fout optreedt, dan wordt nu niet meer de hele API-functie afgebroken met een exception
. De foutmelding die optrad tijdens het printen wordt in de errorMessage
parameter gezet, maar de rest van het resultaat van de functie is verder het normale resultaat alsof er geen printfout is opgetreden.
Dit geldt uiteraard niet voor functies die specifiek bedoeld zijn voor het printen van items, zoals printReceipt
en printTableReceipt
.
Probleem opgelost waardoor omzetgroepen met accenten en andere vreemde tekens in de naam niet konden worden opgevraagd.
Bij het bestellen van een order met daarin samengestelde artikelen werd de prijs van het samengestelde artikel niet goed berekend als het artikel oorspronkelijk geen samengestelde artikelen had, maar in de nieuwe order wel.
Via de eigenschap active
en de functie updateProduct
kan aangegeven worden of een artikel op actief of niet-actief moet staan.
Een fout opgelost in de API-functies updateProduct
, updateRelation
en updateEmployee
die recentelijk geïntroduceerd was.
createProduct
en updateProduct
verwerken nu goed de customFieldList
.
Bij het volledig verplaatsen van een tafel via de API functie moveTableOrder
wordt nu ook zoals verwacht de verplaatsbon afgedrukt op elke printerlocatie waarvan artikelen in de tafelbestelling aanwezig zijn.
Na het uitvoeren van updateOrder
was het mogelijk dat de API probeerde een printopdracht te genereren voor het afdrukken van de order. Hierbij werd echter het verkeerde id
meegegeven aan de printopdracht, waardoor updateOrder
met een exceptie tot stilstand kwam.
Kortingspercentage werd per ongeluk ook omgekeerd bij het opslaan van een tegenboeking. Dit gaf problemen in bijv. totaalberekening van een regel.
Negatieve decimale aantallen werden niet correct doorgegeven. Elk aantal werd afgerond doorgegeven.
Bij het uitvoeren van getJournals
met een filter op kassabonnen of facturen worden de lijst met betaalwijzen (paymentList
) en BTW-groepen (vatGroupList
) nu ook correct gefilterd.
Bij het splitsen van een tafel via de API-functie moveTableOrder
(welke vooral door de handheld gebruikt wordt), werd het werkpleknummer van de transactie altijd naar F1W1 gezet, in plaats van het werkpleknummer van de handheld. Dit veroorzaakte een synchronisatiefout in het geval van een Master/Slave-opstelling met meerdere Slaves.
Bij het opvragen van relaties wordt nu ook de eigenschappen active
, changeTimestamp
and syncMarker
goed ingevuld. Daarnaast is er ook een nieuw eigenschap, createTimestamp
.
Probleem opgelost in updateRelation
waardoor relaties niet goed konden worden bijgewerkt, o.a. wijzigen van de active
-parameter lukte niet goed.
Het was niet meer mogelijk om orderregels te verplaatsen naar een lege tafel via moveTableOrder
.
Indien er bij een order een regel met normale of BPE-korting wordt tegengeboekt, dan wordt de korting ook goed tegengeboekt, in plaats van verdubbeld.
getCurrentSyncMarkers
werkt nu ook als er van een bepaalde syncMarker
nog helemaal geen rijen zijn. Dan wordt er nu gewoon de waarde 0
teruggegeven.
Bij het aanbetalen van een order via payTableOrder
was het mogelijk dat de order van de tafel gehaald werd. Dit was een bug veroorzaakt door een eerdere bugfix in v1.7.7.4.