youngguns-nl / moneybird_php_api

A PHP Library for the MoneyBird API
http://www.moneybird.nl
MIT License
37 stars 14 forks source link

Get all invoices waar een invoice tussen staat met een onvolledige betaling geeft NULL #48

Closed janhenkes closed 11 years ago

janhenkes commented 11 years ago

Als je een lijst facturen ophaalt op de manier zoals beschreven in de wiki waar een factuur tussen staat met een onvolledige betaling (in ons geval was het factuurbedrag 80 en was er een betaling geregistreerd van 15) krijg je NULL terug:

$invoiceService = $moneyBirdConnector->getService('Invoice'); $invoices = $invoiceService->getAll();

In dit geval is $invoices dus NULL. Voor zover wij in de code hebben gekeken zit het probleem ergens in XmlMapper.php bij de functie fromXml. Na het uitvoeren van die functie in de functie fromXmlString is waarde die wordt teruggegeven NULL.

pluijm commented 11 years ago

Met de info die je geeft kan ik het probleem niet reproduceren. Kun je me de XML versie van de factuur mailen? https://.moneybird.nl/invoices/.xml

janhenkes commented 11 years ago

Bij deze, ik heb alle informatie er uit gehaald, ik hoop dat je hier voldoende aan hebt, anders hoor ik het graag!

[knip]

pluijm commented 11 years ago

Ik kan het nog steeds niet reproduceren. Ik vermoed eerder dat er iets anders aan de hand is. Misschien dat je zelf nog wat verder kan zoeken naar het probleem.

Ik heb je XML weggehaald, er stond nog een e-mailadres van de klant in

janhenkes commented 11 years ago

We hadden geen payment method ingevuld bij de betaling en deze wordt in Payment\Abstract.php gecontroleerd of hij NULL is of in de array payment methods staat. In ons geval was de payment een lege string en kregen we een Payment_InvalidMethodException.

Voor nu hebben we zelf de code even aangepast om het te laten werken, misschien een goede suggestie? Regel 52 t/m 54:

if ($value !== null && $value !== "" && !in_array($value, $this->_paymentMethods)) {
    throw new Payment_InvalidMethodException('Invalid payment method: ' . $value);
}
ricbra commented 11 years ago

Ik had hetzelfde probleem, zowel met een lege string "" als de method "reversal". Waarom zit deze check er op? Is het niet handiger om gewoon geen payment te zetten indien deze ongeldig is?

pluijm commented 11 years ago

fixed in https://github.com/bluetools/moneybird_php_api/commit/ac698af5f5425bd7441312c1da848e31fc6d6572

De check zit er op om ongeldige requests richting Moneybird te voorkomen.