Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obliczanie marż
Forum PHP.pl > Forum > PHP
Czarny86
Cześć, mam pewien problem z obliczaniem marż, pokazuje mi jakieś dziwne zawyżone wartości. Możecie rzucić okiem na kod?

  1. $qty = 0;
  2. $days = array();
  3. $query = $this->db->query("SELECT SUM(OO.sumaNetto_buy) AS sumaNetto_buy, SUM(OO.sumaNetto_sell) AS sumaNetto_sell, FROM_UNIXTIME(OO.`time`, '%Y-%m') AS `date`, COUNT(OO.`orders_id`) AS `qty` FROM `orders` OO
  4. WHERE OO.status=1 AND deleted=0 AND OO.`time` >= ".$from." AND OO.`time` <= ".$to." GROUP BY FROM_UNIXTIME(OO.`time`, '%Y-%m')");
  5. foreach ($query->result_array() as $key) {
  6. $array['general_qty'][] = $key['qty'];
  7. $qty = $key['qty'];
  8. $month = $key['date'];
  9. $date = explode("-", $key['date']);
  10. $year = $date[0];
  11. $timestamp = date("U", mktime(0, 0, 0, $date[1], 1, $date[0])) * 1000;
  12.  
  13. $array['orders_days'][] = $timestamp;
  14. $array['orders_values2'][] = "[$timestamp, $qty]";
  15.  
  16. $array['orders_netto_buy_table2'][$year] += $key['sumaNetto_buy'];
  17. $array['orders_netto_sell_table2'][$year] += $key['sumaNetto_sell'];
  18. $array['orders_netto_buy_table2'][$month] += $key['sumaNetto_buy'];
  19. $array['orders_netto_sell_table2'][$month] += $key['sumaNetto_sell'];
  20.  
  21. $array['orders_values_table2'][$month] = $qty;
  22.  
  23. }
  24.  
  25. $query = $this->db->query("SELECT SUM(OO.sumaNetto_buy) AS sumaNetto_buy, SUM(OO.sumaNetto_sell) AS sumaNetto_sell, OO.delivery_id, OO.pharmacy_id, FROM_UNIXTIME(OO.`time`, '%Y-%m') AS `date`, COUNT(OO.`orders_id`) AS `qty` FROM `orders` OO
  26. WHERE OO.status=1 AND deleted=0 AND OO.`time` >= ".$from." AND OO.`time` <= ".$to." GROUP BY FROM_UNIXTIME(OO.`time`, '%Y-%m'), OO.delivery_id, OO.pharmacy_id");
  27.  
  28.  
  29. if($query->num_rows() > 0){
  30. foreach ($query->result_array() as $key) {
  31. $qty = $key['qty'];
  32. $month = $key['date'];
  33. $date = explode("-", $key['date']);
  34. $year = $date[0];
  35. $timestamp = date("U", mktime(0, 0, 0, $date[1], 1, $date[0])) * 1000;
  36.  
  37. $array['days_values_group_table2'][$key['delivery_id']][] = $timestamp;
  38. $array['orders_values_group2'][$key['delivery_id']][] = "[$timestamp, $qty]";
  39.  
  40. $array['orders_netto_buy_group_table2'][$year][$key['delivery_id']] += $key['sumaNetto_buy'];
  41. $array['orders_netto_sell_group_table2'][$year][$key['delivery_id']] += $key['sumaNetto_sell'];
  42.  
  43. $array['orders_netto_buy_group_table2'][$month][$key['delivery_id']] += $key['sumaNetto_buy'];
  44. $array['orders_netto_sell_group_table2'][$month][$key['delivery_id']] += $key['sumaNetto_sell'];
  45.  
  46. $array['orders_values_group_table2'][$month][$key['delivery_id']] += $qty;
  47.  
  48. if ($key['delivery_id'] == 9)
  49. {
  50. $array['orders_values_group_table_pharmacies2'][$month][$key['pharmacy_id']] = $qty;
  51. }
  52. }
  53.  
  54.  
  55. }


W widoku:

  1. <table class="table table-condensed table-hover">
  2. <tr>
  3. <th>Miesiące</th>
  4. <th>wszystkie</th>
  5.  
  6. <?php foreach ($summaryGeneral['days_values_group_table2'] as $station => $value) { ?>
  7. <th><?php echo $summaryGeneral['delivery'][$station] ?></th>
  8. <?php } ?>
  9.  
  10.  
  11.  
  12. </tr>
  13. </thead>
  14.  
  15. <?php $this->load->helper('number_helper'); ?>
  16. <?php foreach ($summaryGeneral['orders_netto_buy_group_table2'] as $month => $arr){ ?>
  17. <?php var_dump(($summaryGeneral['orders_netto_sell_table2'][$month] - $summaryGeneral['orders_netto_buy_table2'][$month]) * (100/$summaryGeneral['orders_netto_buy_table2'][$month])); ?>
  18. <tr>
  19. <?php echo strlen($month) == 4 ? '<td class="success"><strong>'.$month.'</strong></td>' : '<td>'.$month.'</td>' ?>
  20. <td><?php echo price(($summaryGeneral['orders_netto_sell_table2'][$month] - $summaryGeneral['orders_netto_buy_table2'][$month]) / $summaryGeneral['orders_netto_sell_table2'][$month]); ?></td>
  21.  
  22. <?php foreach ($summaryGeneral['days_values_group_table2'] as $station => $value) { ?>
  23. <td><?php echo price(100 * ($summaryGeneral['orders_netto_sell_group_table2'][$month][$station] - $summaryGeneral['orders_netto_buy_group_table2'][$month][$station]) / $summaryGeneral['orders_netto_sell_group_table2'][$month][$station]); ?></td>
  24. <?php } ?>
  25. </tr>
  26.  
  27. <?php } ?>
  28.  
  29.  
  30. </tbody>
  31.  
  32. </table>


W efekcie:
Link
gitbejbe
nie chce mi się czytać kodu, bo najprawdopodobniej masz problem z przechowywaniem liczb w bazie (zapisujesz jako float zamiast decimal)

poczytaj, bardzo fajnie jest tutaj to wyjaśnione : KLIK
Czarny86
W bazie jest decimal wink.gif
Już rozwiązałem problem. Ale i tak dzięki za chęć pomocy wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.