Ordertotalen (WooCommerce)
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:
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.
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