This sql select must be optimized...how?
Why on earth all those inner queries?

Transform all (I just give example)

SELECT DISTINCT
    SM.sales_date,
    (SELECT 
            SUM(gross_sale)
        FROM
            sales_main AS INTERNAL
        WHERE
            INTERNAL.sales_date = SM.sales_date AND INTERNAL.vehicle_name=SM.vehicle_name) AS TGROSS,
    (SELECT 
            SUM(net_sale)
        FROM
            sales_main AS INTERNAL
        WHERE
            INTERNAL.sales_date = SM.sales_date AND INTERNAL.vehicle_name=SM.vehicle_name) AS TNET,


To:

SELECT 
       sales_date,
       SUM(gross_sale) AS TGROSS,
       SUM(net_sale) AS TNET
FROM
            sales_main
        WHERE
            sales_date BETWEEN X AND Y 
         AND 
             vehicle_name=vehicle_name
GROUP BY YEAR(sales_date), MONTH(sales_date), DAY(sales_date)


Once you have that working, we can further optimize it. 

The GROUP BY can also be just GROUP BY sales_date if sales_date is of DATE type, and DATE(sales_date) if it is DATETIME type.
I used that group by for the WITH ROLLUP summary of groups I am used to do in my reporting service...