Creo que tu problema está en la consulta MySQL, que por alguna razón no te está obteniendo bien los resultados. Prueba a hacer la consulta de alguna de estas formas:
Código PHP:
Ver original$result = $db->prepare("SELECT * FROM sales_order WHERE date BETWEEN '" . $d1 . "' AND '" . $d2 . "' ORDER by transaction_id DESC");
Código PHP:
Ver original$result = $db->prepare("SELECT * FROM sales_order WHERE date >= '" . $d1 . "' AND date <= '" . $d2 . "' ORDER by transaction_id DESC");