Detailed monthly sales, houdt geen rekening met eindtotalen van 0 |
![]() ![]() |
Detailed monthly sales, houdt geen rekening met eindtotalen van 0 |
05-02-2010, 12:58:32
Post
#1
|
|
|
Group: Members Posts: 146 Joined: 03-02-2006 Member No.: 6458 Naam: Isabelle |
Hallo,
na veel zoeken naar een goede contri voor een overzicht van maandelijkse verkopen, heb ik 'detailed monthly sales' gevonden. Toch zijn er nog enkele probleempjes die ik niet opgelost krijg: Wanneer een klant een bestelling doet, maar uiteindelijk toch niet betaalt en de bestelling geannuleerd wordt, wijzig ik die zodat het totaal op 0 komt te staan. Ik doe dit aan de hand van een nieuwe rij onder de verzendkosten, met het totaalbedrag in min, zoals bijvoorbeeld hieronder. QUOTE Sub-Totaal: 14.50EUR Verzending : 6.00EUR BESTELLING GEANNULEERD -20.50EUR Totaal: 0.00EUR Wanneer ik de totalen van een maand opvraag via detailed monthly sales, houdt hij echter geen rekening met die toevoeging en geeft hij die bestelling gewoon weer als : subtotaal: 14.50 -- verzending: 6.00 -- Totaal: 20.50 In de bestelgegevens staat het eindtotaal echter op 0, dus ik begrijp niet waar deze contri het totaal vandaan haalt? Telt hij gewoon het subtotaal en de verzending op zonder rekening te houden met andere lijnen zoals mijn 'bestelling geannuleerd'? Verder staat mijn btw bij elke bestelling op 0, dus die kan hij blijkbaar ook niet vinden. Op zich niet zo'n groot probleem wanneer ik de lijst in excel kopieer en via een formule de btw kolom aanpas, maar vooral die geannuleerde bestellingen zijn nogal vervelend om achteraf nog manueel aan te passen. Heeft iemand een idee wat ik kan aanpassen zodat hij wel rekening houdt met geannuleerde bestelling en hiervoor dus overal 0 aangeeft? |
|
|
|
05-02-2010, 20:22:23
Post
#2
|
|
![]() Group: Members Posts: 475 Joined: 11-04-2004 From: Arendonk (Belgie) Member No.: 994 Naam: Carine Bruyndoncx |
is het een optie om de geannuleerde bestellingen er gewoon uit te filteren ?
lijkt me een stuk makkelijker ... -------------------- LIVE- volledig geintegreerde brick&clicks shop gebaseerd op osFinancials en osCommerce
|
|
|
|
05-02-2010, 21:01:44
Post
#3
|
|
![]() Group: Moderators Posts: 7358 Joined: 20-09-2005 Member No.: 5331 Naam: Norman |
is het een optie om de geannuleerde bestellingen er gewoon uit te filteren ? lijkt me een stuk makkelijker ... Die gooi ik meteen weg -------------------- Norman in 't Veldt,
Moderator osCommerce Nederland |
|
|
|
07-02-2010, 14:21:11
Post
#4
|
|
|
Group: Members Posts: 146 Joined: 03-02-2006 Member No.: 6458 Naam: Isabelle |
Wel, ik wilde graag een overzicht van alle bestellingen/maand, dus ook geannuleerde. Weggooien of uitfilteren is geen optie als je je boekhouding compleet wil houden. (mijn boekhouder heeft het graag volledig, dus inclusief geannuleerde orders + net zoals met facturen, is het voor belastingcontrole enzo nogal verdacht als er bestelnummers uit het rijtje verdwijnen)
|
|
|
|
07-02-2010, 14:54:11
Post
#5
|
|
![]() Group: Members Posts: 475 Joined: 11-04-2004 From: Arendonk (Belgie) Member No.: 994 Naam: Carine Bruyndoncx |
zolang wij niet weten hoe dat je die nieuwe rij toevoegt op database niveau, kunnen we ook niet zien waar het rapport in de mist gaat ...
-------------------- LIVE- volledig geintegreerde brick&clicks shop gebaseerd op osFinancials en osCommerce
|
|
|
|
07-02-2010, 15:09:05
Post
#6
|
|
![]() Group: Members Posts: 978 Joined: 14-06-2005 Member No.: 4766 Naam: Eric van den Berg |
. (mijn boekhouder heeft het graag volledig, dus inclusief geannuleerde orders + net zoals met facturen, is het voor belastingcontrole enzo nogal verdacht als er bestelnummers uit het rijtje verdwijnen) Mijn boekhouder en de belastingdienst hebben geen interesse in bestelnummers of ordernummers. Factuurnummers is wat ze willen met gedane betalingen want alleen dat is van belang voor je BTW-aangifte. Er mogen geen factuurnummers ontbreken, juist dat "rijtje" dient compleet te zijn. Wat versta je trouwens onder een geannuleerde bestelling? Ervanuitgaande dat je werkt met vooruitbetaling, is dat een bestelling die niet betaald is? Of een bestelling die na betaling wordt geannuleerd? Of na verzending wordt geretourneerd? Je zal dan een factuur moeten maken van de betaling (inkomsten) en vervolgens een creditnota van de terugbetaling (uitgaven). Een niet-betaalde en niet-verzonden bestelling daarentegen is geen "BTW", is dus niet van belang voor de belastingdienst en een factuur is overbodig. -------------------- Goed lezen is het halve werk.
|
|
|
|
11-02-2010, 10:57:26
Post
#7
|
|
|
Group: Members Posts: 146 Joined: 03-02-2006 Member No.: 6458 Naam: Isabelle |
zolang wij niet weten hoe dat je die nieuwe rij toevoegt op database niveau, kunnen we ook niet zien waar het rapport in de mist gaat ... Wel, ik klik gewoon in de bestelling op 'wijzig' (denk dat ik daar ooit een contri voor heb geïnstalleerd, edit orders ofzoiets?) en dan kan je in de lege vakjes onder de verzendkosten nog andere kosten inbrengen of andere dingen in vermindering brengen. Zoals in mijn eerste post vermeld, doe ik dit dus zo: QUOTE Sub-Totaal: 14.50EUR Verzending : 6.00EUR BESTELLING GEANNULEERD -20.50EUR (**** dit minbedrag vul ik dus in, in de lege vakjes onder de verzendkost, hierdoor wijzigt, na 'update' te klikken ook het totaal naar 0.00****) Totaal: 0.00EUR Ik weet niet wat en/of waar in de database wijzigingen worden aangebracht. Ik dacht dat de hele bestelling dan werd aangepast in de database. |
|
|
|
11-02-2010, 21:12:12
Post
#8
|
|
![]() Group: Members Posts: 475 Joined: 11-04-2004 From: Arendonk (Belgie) Member No.: 994 Naam: Carine Bruyndoncx |
sorry, maar hier mee weet ik nog niets.
Je moet voor een gewijzigde bestelling tonen wat voor order totalen er opgeslagen worden, en dan kunnen we kijken of/hoe het rapport kan aangepast worden om ermee rekening te houden. Dus via phpmyadmin wat gegevens bekijken en zien hoe een gewijzigde 0 order verschilt van al de andere. -------------------- LIVE- volledig geintegreerde brick&clicks shop gebaseerd op osFinancials en osCommerce
|
|
|
|
12-02-2010, 10:57:58
Post
#9
|
|
|
Group: Members Posts: 146 Joined: 03-02-2006 Member No.: 6458 Naam: Isabelle |
sorry, maar hier mee weet ik nog niets. Je moet voor een gewijzigde bestelling tonen wat voor order totalen er opgeslagen worden, en dan kunnen we kijken of/hoe het rapport kan aangepast worden om ermee rekening te houden. Dus via phpmyadmin wat gegevens bekijken en zien hoe een gewijzigde 0 order verschilt van al de andere. sorry, wist niet goed waar ik in mijn database moet zoeken om die waardes te vinden. Misschien heeft het wel iets te maken met wat die contri om de orders te wijzigen doet. In ieder geval, heb eens rondgekeken in mijn database en vind bij een geannuleerde bestelling in de 'orders_total' dit QUOTE orders_total_id orders_id title text value class sort_order 3372 1026 Sub-Totaal: 14.50EUR 14.5000 ot_subtotal 1 3373 1026 Verzending: 13.00EUR 13.0000 ot_shipping 2 3374 1026 Totaal: <b>0.00EUR</b> 0.0000 ot_total 4 3378 1026 BESTELLING GEANNULEERD -27.50EUR -27.5000 ot_custom 3 Voor een bestelling die niet geannuleerd is, vind ik dit: QUOTE 3415 1040 Sub-Totaal: 14.00EUR 14.0000 ot_subtotal 1 3416 1040 Verzending: 6.00EUR 6.0000 ot_shipping 2 3417 1040 Totaal: <b>20.00EUR</b> 20.0000 ot_total 4 Zijn dit de juiste gegevens of zit ik compleet fout te zoeken? Ik ken niet zoveel van php-code om in de contri 'detailed monthly sales' terug te vinden hoe al deze gegevens worden gebruikt, maar de file ervan (catalog/admin) heeft de code : CODE <?
require('includes/application_top.php'); require(DIR_WS_CLASSES . 'currencies.php'); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <title><?php echo TITLE; ?></title> <link rel="stylesheet" type="text/css" href="includes/stylesheet.css"> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" bgcolor="#FFFFFF"> <? if ( ! $_REQUEST['print'] ) require(DIR_WS_INCLUDES . 'header.php'); ?> <table border="0" width="100%" cellspacing="2" cellpadding="2"> <tr> <? if ( ! $_REQUEST['print'] ) { ?> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="1" cellpadding="1" class="columnLeft"><? require(DIR_WS_INCLUDES . 'column_left.php'); ?></table></td> <? } ?> <td valign="top"> <div class="pageHeading"><?= HEADING_TITLE ?></div><br /> <table border="0" width='100%' cellspacing="0" cellpadding="2"> <? if ( isset( $_REQUEST['year'] ) && isset( $_REQUEST['month'] ) ) { if ( ! in_array( $_REQUEST['month'], explode( ',', MONTH_LIST ) ) ) { ?> <tr> <td class="pageHeading">Error!</td> </tr> <tr> <td class="dataTableContent">'<?= $_REQUEST['month'] ?>' is not a valid month!</td> </tr> <? } else { ?> <tr> <td class="pageHeading" colspan="6"><?= $_REQUEST['year'] ?> » <?= $_REQUEST['month'] ?></td> </tr> <tr> <td class="dataTableContent" colspan="3"><a href="stats_detailed_monthly_sales.php">Back</a></td> <td class="dataTableContent" colspan="3" align="right"><? if ( ! $_REQUEST['print'] ) { ?><a href="?year=<?= $_REQUEST['year'] ?>&month=<?= $_REQUEST['month'] ?>&print=true" target="_blank">Printer Friendly Version (New Window)</a></td><? } ?> </tr> <tr> <td class="dataTableContent" colspan="6"> </td> </tr> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent" width="5%">Order #</td> <td class="dataTableHeadingContent">Customer</td> <td class="dataTableHeadingContent">Date</td> <td class="dataTableHeadingContent">Order Subtotal</td> <td class="dataTableHeadingContent">Shipping Total</td> <td class="dataTableHeadingContent">Tax Total</td> <td class="dataTableHeadingContent">Order Total</td> </tr> <? $orders_query = tep_db_query( "SELECT * FROM orders WHERE year( date_purchased ) = " . $_REQUEST['year'] . " AND monthname( date_purchased ) = '" . $_REQUEST['month'] . "' ORDER BY date_purchased ASC" );//DESC veranderd naar ASC zodat data van bep maand beginnen bij vroegste datum $running_net_total = 0; $running_tax_total = 0; $running_shipping_total = 0; while ( $orders = tep_db_fetch_array( $orders_query ) ) { $net_total_query = tep_db_query( "SELECT value AS total FROM orders_total WHERE orders_id = " . $orders['orders_id'] . " AND class = 'ot_subtotal'" ); $net_total = tep_db_fetch_array( $net_total_query ); $shipping_total_query = tep_db_query( "SELECT value AS total FROM orders_total WHERE orders_id = " . $orders['orders_id'] . " AND class = 'ot_shipping'" ); $shipping_total = tep_db_fetch_array( $shipping_total_query ); $tax_total_query = tep_db_query( "SELECT value AS total FROM orders_total WHERE orders_id = " . $orders['orders_id'] . " AND class = 'ot_tax'" ); $tax_total = tep_db_fetch_array( $tax_total_query ); $running_net_total += $net_total['total']; $running_shipping_total += $shipping_total['total']; $running_tax_total += $tax_total['total']; ?> <tr class="dataTableRow"> <td class="dataTableContent"><a href="invoice.php?oID=<?= $orders['orders_id'] ?>" target="_blank"><?= $orders['orders_id'] ?><a href="invoice.php?oID=<?= $orders['orders_id'] ?>"></td> <td class="dataTableContent"><?= $orders['customers_name'] ?></td> <td class="dataTableContent"><?= date( 'd/m/Y', strtotime( $orders['date_purchased'] ) ) ?></td> <td class="dataTableContent">€<?= number_format( $net_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $shipping_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $tax_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $net_total['total'] + $shipping_total['total'] + $tax_total['total'], 2 ) ?></td> </tr> <? } ?> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent" colspan="3"> </td> <td class="dataTableHeadingContent">€<?= number_format( $running_net_total, 2 ) ?></td> <td class="dataTableHeadingContent">€<?= number_format( $running_shipping_total, 2 ) ?></td> <td class="dataTableHeadingContent">€<?= number_format( $running_tax_total, 2 ) ?></td> <td class="dataTableHeadingContent">€<?= number_format( $running_net_total + $running_shipping_total + $running_tax_total, 2 ) ?></td> </tr> <? } } else { $count = 0; $years_query = tep_db_query( "SELECT DISTINCT( year( date_purchased ) ) AS y FROM " . TABLE_ORDERS . " ORDER BY date_purchased DESC" ); while ( $years = tep_db_fetch_array( $years_query ) ) { if ( $count > 0 ) { ?> <tr> <td class="dataTableContent"> </tr> <? } ?> <tr> <td class="pageHeading" colspan="4"><?= $years['y'] ?></td> </tr> <tr class="dataTableHeadingRow"> <td class="dataTableHeadingContent" width="20%"><?= TABLE_HEADING_MONTH ?></td> <td class="dataTableHeadingContent" width="20%"><?= TABLE_HEADING_TOTAL_SALES_NET ?></td> <td class="dataTableHeadingContent" width="20%"><?= TABLE_HEADING_TOTAL_SHIPPING ?></td> <td class="dataTableHeadingContent" width="20%"><?= TABLE_HEADING_TOTAL_TAX ?></td> <td class="dataTableHeadingContent" width="20%"><?= TABLE_HEADING_TOTAL_SALES_GROSS ?></td> </tr> <? $months_query = tep_db_query( "SELECT DISTINCT( monthname( date_purchased ) ) AS month, month( date_purchased ) AS m FROM " . TABLE_ORDERS . " WHERE date_purchased LIKE '" . $years['y'] . "-%' ORDER BY date_purchased DESC" ); while ( $months = tep_db_fetch_array( $months_query ) ) { $net_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_subtotal'" ); $net_total = tep_db_fetch_array( $net_total_query ); $shipping_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_shipping'" ); $shipping_total = tep_db_fetch_array( $shipping_total_query ); $tax_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_tax'" ); $tax_total = tep_db_fetch_array( $tax_total_query ); ?> <tr class="dataTableRow"> <td class="dataTableContent"><a href="?year=<?= $years['y'] ?>&month=<?= $months['month'] ?>"><?= $months['month'] ?></a></td> <td class="dataTableContent">€<?= number_format( $net_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $shipping_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $tax_total['total'], 2 ) ?></td> <td class="dataTableContent">€<?= number_format( $net_total['total'] + $shipping_total['total'] + $tax_total['total'], 2 ) ?></td> </tr> <? $count ++; } } } ?> </table> </td> </tr> </table> <? if ( ! $_REQUEST['print'] ) require(DIR_WS_INCLUDES . 'footer.php'); ?> </body> </html> |
|
|
|
12-02-2010, 20:27:28
Post
#10
|
|
![]() Group: Members Posts: 475 Joined: 11-04-2004 From: Arendonk (Belgie) Member No.: 994 Naam: Carine Bruyndoncx |
je moet in de code lijnen copieren en aanpassen
neem shipping_total als voorbeeld, copieer dit stuk binnen de while loop als custom total en verander ot_shipping naar ot_custom van CODE $shipping_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_shipping'" ); $shipping_total = tep_db_fetch_array( $shipping_total_query ); naar CODE $shipping_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_shipping'" ); $shipping_total = tep_db_fetch_array( $shipping_total_query ); $custom_total_query = tep_db_query( "SELECT SUM( value ) AS total FROM orders_total ot, orders o WHERE ot.orders_id=o.orders_id AND year( o.date_purchased ) = " . $years['y'] . " AND month( o.date_purchased ) = " . $months['m'] . " AND ot.class = 'ot_custom'" ); $custom_total = tep_db_fetch_array( $custom_total_query ); een beetje verder voeg custom_total toe aan de optelsom CODE <td class="dataTableContent">€<?= number_format( $net_total['total'] + $shipping_total['total'] + $custom_total['total']+ $tax_total['total'], 2 ) ?></td> dat is het volgens mijn, NB niet getest, maar dat is jouw job ! -------------------- LIVE- volledig geintegreerde brick&clicks shop gebaseerd op osFinancials en osCommerce
|
|
|
|
16-02-2010, 11:27:10
Post
#11
|
|
|
Group: Members Posts: 146 Joined: 03-02-2006 Member No.: 6458 Naam: Isabelle |
bedankt!! Het is nog even prutsen hier en daar en alles mooi in nieuwe kolommetjes krijgen, maar het komt in orde denk ik!
|
|
|
|
![]() ![]() |
|
Lo-Fi Version | Time is now: 06-09-2010, 15:34:24 |