2011-07-28 7 views
1
mysql> select * from phppos_sales_items_taxes; 
+---------+---------+------+-------+---------+------------+ 
| sale_id | item_id | line | name | percent | cumulative | 
+---------+---------+------+-------+---------+------------+ 
|  1 |  1 | 1 | Tax 1 | 10.00 |   0 | 
|  1 |  1 | 1 | Tax 2 | 10.00 |   1 | 
|  3 |  1 | 1 | Tax 1 | 10.00 |   0 | 
|  3 |  1 | 1 | Tax 2 | 10.00 |   0 | 
|  4 |  1 | 1 | Tax 1 | 8.00 |   0 | 
|  4 |  1 | 1 | Tax 2 | 10.00 |   1 | 
+---------+---------+------+-------+---------+------------+ 

mysql> select * from phppos_sales_items; 
+---------+---------+-------------+--------------+------+--------------------+-----------------+-----------------+------------------+ 
| sale_id | item_id | description | serialnumber | line | quantity_purchased | item_cost_price | item_unit_price | discount_percent | 
+---------+---------+-------------+--------------+------+--------------------+-----------------+-----------------+------------------+ 
|  1 |  1 |    |    | 1 |    1.00 |   8.00 |   10.00 |    0 | 
|  3 |  1 |    |    | 1 |    1.00 |   8.00 |   10.00 |    0 | 
|  4 |  1 |    |    | 1 |    3.00 |   8.00 |   10.00 |    0 | 
|  5 |  2 |    |    | 1 |    1.00 |   10.00 |   12.00 |    0 | 
+---------+---------+-------------+--------------+------+--------------------+-----------------+-----------------+------------------+ 
4 rows in set (0.00 sec) 

各パーセント(10.00,8.00など)ごとに、1つのクエリで合計税を決定する必要があります。税金が累積= 1である場合、税額は(小計+他の売り上げ税)* tax_percent/100によって決定されます。それ以外の場合は標準税計算式です。1つのクエリの税金(累積または標準税)

SELECT percent, 
     SUM(subtotal) AS subtotal, 
     SUM(total) AS total, 
     SUM(tax)  AS tax 
FROM (SELECT name, 
       Concat(percent, '%') 
       AS 
         PERCENT, 
       (item_unit_price * quantity_purchased - 
       item_unit_price * quantity_purchased * 
       discount_percent/100) AS subtotal, 
       IF (cumulative = 1, Round((item_unit_price * quantity_purchased 
              - 
              item_unit_price * quantity_purchased 
              * 
              discount_percent/100 + 
--NEED TO DO A SUBQUERY HERE TO GET SALES TAX FOR FOR SALE_ID, ITEM_ID, LINE 


) * ( 
                  percent/100), 2) 
       , Round 
       (( 
       item_unit_price * quantity_purchased - 
       item_unit_price * quantity_purchased * 
       discount_percent 
      /100) * (1 + (percent/100)), 2)) 
       AS 
         total, 
       Round((item_unit_price * quantity_purchased - 
         item_unit_price * quantity_purchased * 
          discount_percent/100) * 
        (percent/100), 2) 
       AS tax 
     FROM phppos_sales_items_taxes 
       JOIN phppos_sales_items 
       ON phppos_sales_items.sale_id = 
        phppos_sales_items_taxes.sale_id 
        AND phppos_sales_items.item_id = 
         phppos_sales_items_taxes.item_id 
        AND phppos_sales_items.line = phppos_sales_items_taxes.line 
       JOIN phppos_sales 
       ON phppos_sales_items_taxes.sale_id = phppos_sales.sale_id 
     WHERE phppos_sales.deleted = 0 
       AND DATE(sale_time) BETWEEN '2011-07-28' AND '2011-07-28') AS 
     temp_taxes 
GROUP BY percent 
+0

これをより明確にするには、実行する計算を(手作業で)表示できますか? –

答えて

0

IF文を使用してみてください:あなたが値を入力した場合

IF(cumulative = 1,(((subtotal+other_tax_in_sale)* tax_percent)/100), standard_tax) 

は、これは動作するはずです。

+0

私がこれを持っている問題は "other_tax_in_sale"です。サブクエリをどうやって行うのか分からないようです。私はそこに私のポストを更新した私は立ち往生しています。 –

関連する問題