Ordertotalen (WooCommerce)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Wat betekenen precies de getallen onder wp-admin » WooCommerce » Reports? En kan ik dat automatiseren? En waarom zijn deze getallen problematisch?

WooCommerce Order Report

In eerste aanleg is het allemaal best eenvoudig:

WooCommerce order report
Dezelfde gegevens - Via SQL
Onderdeel Opmerkingen
Order-datum Datum waarop de order is aangemaakt - Veld wp_posts.post_date. Het is dus niet de datum waarop de order status Completed heeft gekregen
Gross sales in this period Verkoopbedrag
Net sales in this period Omzet, vermoedelijk ex. bezorging (maar dat kan ik hier niet zien)

WooCommerce Order Report - Refund

Nu wordt het ingewikkelder:

  • Op 8 april is er een order geplaatst met verkoopbedrag van € 9,95
  • Op 16 mei is deze order geannuleerd en het bedrag terugbetaald.
WP Reports: Deze order is opgenomen in het overzicht over 8 april, alsof deze niet is geannuleerd
Getallen over 8 april: Zij-aan-zij SQL & WP Reporting (=order-overzicht in WooCommerce):
  • In SQL (eigen code) had ik er voor gekozen om te filteren op order-status completed. Orders met status refunded worden dus niet meegenomen
  • WP Reporting: De order is wél meegenomen, want er wordt gefilterd op beide statussen
Deze geannuleerde order kan ook via SQL gemakkelijk boven water getoverd worden, door post_status wc-refunded mee te nemen. Maar waarom zou je?
Getallen over mei (de maand waarin de order geannuleerd werd): Zij-aan-zij SQL & WP Reporting: Deze laatste reporteert een omzet die € 40,80 lager is dan wat ik via SQL krijg, terwijl het aantal orders gelijk is ⇒ De omzet van de geannulleerde order is in mindering gebracht op de omzet, maar het aantal orders is ongewijzigd en het is niet te traceren waar dat bedrag van € 40,80 vandaan komt, tenzij je dat vantevoren al weet, zoals in dit geval - En dat is een probleem

Het probleem met WooCommerce Order Report

WooCommerce Order Reports gaat om met refunds op een manier waarvan ik denk dat het problematisch is:

  • Als een order (die later wordt geannuleerd) wordt geplaatst, wordt de bijbehorende omzet geïncorporeerd in de omzet van de betreffende maand - so far, so good
  • Op het moment dat die order geannulleerd wordt, wordt de omzet in de maand waarin de order is geannulleerd, navenant verlaagd - Ook niet zo gek
  • Het aantal orders verandert echter niet, en je kunt in de omzetcijfers over de maand waarin een order is geannuleerd, niet traceren waarom het orderbedrag lager is dan verwacht - En dat is een probleem.

Welliswaar vermeldt WP Reporting dat er een bedrag aan refunds is, maar je kunt niet gemakkelijk traceren welke annulering welke omzet heeft geaffecteerd. Het feit dat het aantal orders niet verandert in een maand waarin een annulering plaatsvindt, zorgt dat de totaalbedragen niet kloppen.

Oplossingen

Oplossing (1): Twee keer incorporeren

Neem de oorspronkelijke order op in de administratie + een credit-order op het moment dat deze geannuleerd wordt. Da's hoe het in boekhoudingen meestal gaat.

  • Voordeel: Helemaal duidelijk wat er gebeurd
  • Nadeel: Beetje omslachtig, want twee mutaties - Net als in een boekhouding.

Oplossing (2): Helemaal niet incorporeren

De andere aanpak: De betreffende order helemaal niet incorporeren. Dit is was ik in SQL doe.

  • Voordeel: Gemakkelijk
  • Nadeel: Als annulatie flink later plaatsvindt dan de oorspronkelijke order (zoals in de casus hierboven), dan klopt de administratie een tijdje niet.

Conclusie: Gebruik Order Reports niet

  • Gewoon niet gebruiken, want je kunt refund-gerelateerde mutaties niet traceren en totaalbedragen kloppen niet meer
  • Waarschijnlijk kloppen de getallen over de lange termijn wel, maar het feit dat deze niet te traceren zijn en getallen gewoon niet kloppene, vind ik onaanvaardbaar.

Alternatieve oplossing: SQL

Een pure SQL-oplossing: WooCommerce - Datamodel#Revenue per month

See also

Bronnen