Tìm kiếm nhanh

[HELP] Hiển thị giảm giá theo %

Thảo luận trong 'Hỗ trợ modules' đăng bởi aptx4869, 14/07/2016 11:21.

  • aptx4869

    aptx4869 Trần Phương

    em dùng shop thì phần giảm giá theo giá tièn cho từng sản phẩm.Khi hiện ngoài trang chủ thì có giá đã giảm là bao nhiêu đó

    Vd: sản phẩm 2tr

    giảm giá 1tr

    thì ngoài trang chủ là -1.000.000

    có cách nào cho nó thành % ko ạ. Như trênn là 50% chẳng hạn

     
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    Không hỗ trợ nhưng nói qua. Dùng cách tính % trong toán học sẽ ra số giảm. rồi xuất ra tpl cái số giảm đó là ok. Chi tiết thì ai đó động vào code đi :D

     
  • hoanglongvnpt

    hoanglongvnpt Nguyễn Tất Thắng

    Bạn xem hình để thực hiện nhé:

    1 tại quản lý giảm giá:

     

    Tại sản phẩm bạn chọn chương trình giảm giá bạn đã tạo

     

     

    demo sản phẩm đã được giảm giá:

     
  • aptx4869

    aptx4869 Trần Phương

    ý em là giảm theo tiền nhưng xuất ra theo % bác Thắng à. Chứ giảm theo % nó lẻ ghê lắm

     
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Bạn nói ký đi. Ví dụ giá 100k giảm 10k thì %  bạn nói là bao nhiêu, cấu hình như bác Thắng nói là đúng rồi mà?

     
  • hoanglongvnpt

    hoanglongvnpt Nguyễn Tất Thắng

    Lại liên quan php rồi đấy

     

     
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Ý bạn là cấu hình là giảm giá theo tiền nhưng hiển thị ra ngoài là % phải không. Cái này thì phải làm như a Tứ nói :)) 

     
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    Thế này là chuẩn nè

    $xtpl->assign( 'DISCOUNT', ( $discount/$price * 100 ) );

     

     
    Lần sửa cuối bởi bạn: 14/07/2016 11:58
    hoanglongvnpt thích điều này.
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Làm tròn nữa a :D 

     
    Lần sửa cuối bởi một điều hành viên: 14/07/2016 11:59
    hoanglongvnpt thích điều này.
  • aptx4869

    aptx4869 Trần Phương

    đó cái làm tròn em nhức đầu nãy h nè. Em nghĩ cái này nhiều người cần đây

     
  • hoanglongvnpt

    hoanglongvnpt Nguyễn Tất Thắng

    Đặng Đình Tứ: Múc cho ấy đê....

     
    aptx4869 thích điều này.
  • dangdinhtu

    dangdinhtu Đặng Đình Tứ

    Điều hành viên Quản trị diễn đàn

    Em thề là không động shops rồi frown

     
    aptx4869 thích điều này.
  • huongpro_love

    huongpro_love Nguyễn Văn Hưởng

    Có cần ae làm cái lễ giải lời thề ko a :)))

     
  • hoanglongvnpt

    hoanglongvnpt Nguyễn Tất Thắng

    blush

     
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

    Mình mém chút là thề theo anh ấy rồi !

    Làm tròn lấy phần nguyên thôi. Chứ ai đời giảm giá 99.99%, nó kỳ lắm.

     
  • aptx4869

    aptx4869 Trần Phương

    tức là bác vẫn chưa thề mà hoho

     
  • anhyeuviolet

    anhyeuviolet Kenny Nguyen

     

    Ok, để nghĩ phương án làm cho bạn :D

     
  • quocdoan419

    quocdoan419 Quốc Đoàn

    không biết đúng ý bạn không ?
    tức là bạn thiết lập giảm giá theo số tiền và ko theo %

    và ở site bạn muốn hiển thị thêm %

    nếu đúng như thế thì làm như sau :
    mở modules/shops/site.function.phpphp, tìm dòng 116 có function nv_get_price 

    thay thế toàn bộ bằng :

    function nv_get_price($pro_id, $currency_convert, $number = 1, $per_pro = false, $module = '')
    {
        global $db, $db_config, $site_mods, $module_data, $global_array_shops_cat, $pro_config, $money_config, $discounts_config;
    
        $return = array();
        $discount_percent = 0;
        $discount_unit = '';
        $discount = 0;
    
        $module_data = !empty($module) ? $site_mods[$module]['module_data'] : $module_data;
        $product = $db->query('SELECT listcatid, product_price, money_unit, price_config, discount_id FROM ' . $db_config['prefix'] . '_' . $module_data . '_rows WHERE id = ' . $pro_id)->fetch();
        $price = $product['product_price'];
    
        if (!$per_pro) {
            $price = $price * $number;
        }
    
        $r = $money_config[$product['money_unit']]['round'];
        $decimals = nv_get_decimals($currency_convert);
    
        if ($r > 1) {
            $price = round($price / $r) * $r;
        } else {
            $price = round($price, $decimals);
        }
    
        if ($global_array_shops_cat[$product['listcatid']]['typeprice'] == 2) {
            $_price_config = unserialize($product['price_config']);
            if (!empty($_price_config)) {
                foreach ($_price_config as $_p) {
                    if ($number <= $_p['number_to']) {
                        $price = $_p['price'] * (!$per_pro ? $number : 1);
                        break;
                    }
                }
            }
        } elseif ($global_array_shops_cat[$product['listcatid']]['typeprice'] == 1) {
            if (isset($discounts_config[$product['discount_id']])) {
                $_config = $discounts_config[$product['discount_id']];
                if ($_config['begin_time'] < NV_CURRENTTIME and ($_config['end_time'] > NV_CURRENTTIME or empty($_config['end_time']))) {
                    foreach ($_config['config'] as $_d) {
                        if ($_d['discount_from'] <= $number and $_d['discount_to'] >= $number) {
                            $discount_percent = $_d['discount_number'];
                            if ($_d['discount_unit'] == 'p') {
                                $discount_unit = '%';
                                $discount = ($price * ($discount_percent / 100));
                                $dis_pt = '';
                            } else {
                                $discount_unit = ' ' . $pro_config['money_unit'];
                                $discount = $discount_percent * $number;
                                $dis_pt = (($discount_percent *100) / $price);
                            }
                            break;
                        }
                    }
                }
            }
        }
    
        $price = nv_currency_conversion($price, $product['money_unit'], $currency_convert);
    
        $return['price'] = $price; // Giá sản phẩm chưa format
        $return['price_format'] = nv_number_format($price, $decimals); // Giá sản phẩm đã format
     $return['dis_pt'] = round($dis_pt,1);
        $return['discount'] = $discount;// Số tiền giảm giá sản phẩm chưa format
        $return['discount_format'] = nv_number_format($discount, $decimals); // Số tiền giảm giá sản phẩm đã format
        $return['discount_percent'] = $discount_unit == '%' ? $discount_percent : nv_number_format($discount_percent, $decimals);// Giảm giá theo phần trăm
        $return['discount_unit'] = $discount_unit;// Đơn vị giảm giá
    
        $return['sale'] = $price - $discount;// Giá bán thực tế của sản phẩm
        $return['sale_format'] = nv_number_format($return['sale'], $decimals);// Giá bán thực tế của sản phẩm đã format
        $return['unit'] = $currency_convert;
    
        return $return;
    }

    ở các file tpl thì bạn thêm : {PRICE.dis_pt} ở sau <!-- BEGIN: discounts -->

     
  • tuphung

    tuphung Phùng Tú

    Vì cái câu thề mà nó bỏ rơi cái shop của tôi, nguyền rủa.

     
  • nhimthulinh

    nhimthulinh

    Điều hành viên Quản trị diễn đàn

    tội anh kaka

     

Chia sẻ trang này

Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây