Вход Регистрация
Файл: core/functions/discount_functions.php
Строк: 214
<?php
#####################################
# ShopCMS: Скрипт интернет-магазина
# Copyright (c) by ADGroup
# http://shopcms.ru
#####################################





function _calculateGeneralPriceDiscount$orderPrice$log )
{
        
$customerID = (int)regGetIdByLogin($log);
        
$q db_query("select discount_id, price_range, percent_discount from ".
                        
ORDER_PRICE_DISCOUNT_TABLE." order by price_range " );
        
$data = array();
        while( 
$row db_fetch_row($q) ) $data[] = $row;

        if ( 
count($data) != )
        {
                for( 
$i=0$i<count($data)-1$i++ )
                {
                        if ( 
$data[$i][ "price_range" ] < $orderPrice
                                
&& $orderPrice $data[$i+1][ "price_range" ]  )
                                return 
$data[$i][ "percent_discount" ];
                }
                if (  
$datacount($data)-][ "price_range" ] < $orderPrice  )
                        return 
$datacount($data)-][ "percent_discount" ];
        }

        return 
0;
}


function 
dscCalculateDiscount$orderPrice$log  )
{
        
$discount = array(
                        
"discount_percent"       => 0,
                        
"discount_standart_unit" => 0,
                        
"discount_current_unit"  => 0,
                        
"rest_standart_unit"     => 0,
                        
"rest_current_unit"      => 0,
                        
"priceUnit"              => getPriceUnit() );
        
$customerID = (int)regGetIdByLogin($log);
        switch( 
CONF_DISCOUNT_TYPE )
        {

                
// discount is switched off
                
case 1:
                        return 
$discount;
                        break;

                
// discount is based on customer group
                
case 2:
                        if (  !
is_bool($customerID=regGetIdByLogin($log))  )
                        {
                                
$customer_group                 GetCustomerGroupByCustomerId$customerID );
                                if ( 
$customer_group )
                                        
$discount["discount_percent"]         = $customer_group["custgroup_discount"];
                                else
                                        
$discount["discount_percent"]        = 0;
                        }
                        else
                                return 
$discount;
                        break;

                
// discount is calculated with help general order price
                
case 3:
                        
$discount["discount_percent"]                 = _calculateGeneralPriceDiscount$orderPrice$log );
                        break;

                
// discount equals to discount is based on customer group plus
                //                discount calculated with help general order price
                
case 4:
                        if ( !
is_bool($customerID) )
                        {
                                
$customer_group GetCustomerGroupByCustomerId$customerID );
                                if ( !
$customer_group )
                                        
$customer_group = array( "custgroup_discount" => 0  );
                        }
                        else
                                
$customer_group["custgroup_discount"] = 0;
                        
$discount["discount_percent"]                 = $customer_group["custgroup_discount"] +
                                                                        
_calculateGeneralPriceDiscount(
                                                                                
$orderPrice$log );
                        break;

                
// discount is calculated as MAX( discount is based on customer group,
                //                        discount calculated with help general order price  )
                
case 5:
                        if ( !
is_bool($customerID) )
                                
$customer_group GetCustomerGroupByCustomerId$customerID );
                        else
                                
$customer_group["custgroup_discount"] = 0;
                        if ( 
$customer_group["custgroup_discount"] >= _calculateGeneralPriceDiscount(
                                                        
$orderPrice$log ) )
                                
$discount["discount_percent"] = $customer_group["custgroup_discount"];
                        else
                                
$discount["discount_percent"] = _calculateGeneralPriceDiscount$orderPrice$log );
                        break;
        }

        
$discount["discount_standart_unit"]        = ((float)$orderPrice/100)*(float)$discount["discount_percent"];
        
$discount["discount_current_unit"]        = show_priceWithOutUnit$discount["discount_standart_unit"] );
        
$discount["rest_standart_unit"]         = $orderPrice $discount["discount_standart_unit"];
        
$discount["rest_current_unit"]          = show_priceWithOutUnit$discount["rest_standart_unit"] );
        return 
$discount;
}



// *****************************************************************************
// Purpose        gets all order price discounts
// Inputs
// Remarks
// Returns
function dscGetAllOrderPriceDiscounts()
{
        
$q db_query"select discount_id, price_range, percent_discount from ".ORDER_PRICE_DISCOUNT_TABLE.
                        
" order by price_range" );
        
$data = array();
        while( 
$row db_fetch_row($q) ) $data[] = $row;
        return 
$data;
}

// *****************************************************************************
// Purpose        add order price discount
// Inputs
// Remarks
// Returns        if discount with $price_range already exists this function returns false and does not add new discount
//                        otherwise true
function dscAddOrderPriceDiscount$price_range$percent_discount )
{
        
$q=db_query"select price_range, percent_discount from ".ORDER_PRICE_DISCOUNT_TABLE.
                        
" where price_range=".xEscSQL($price_range));
        if ( (
$row=db_fetch_row($q)) )
                return 
false;
        else
        {
                
db_query("insert into ".ORDER_PRICE_DISCOUNT_TABLE." ( price_range, percent_discount ) ".
                         
" values( ".xEscSQL($price_range).", ".xEscSQL($percent_discount)." ) ");
                return 
true;
        }
}

// *****************************************************************************
// Purpose        delete discount
// Inputs
// Remarks
// Returns
function dscDeleteOrderPriceDiscount$discount_id )
{
        
db_query("delete from ".ORDER_PRICE_DISCOUNT_TABLE." where discount_id=".(int)$discount_id);
}

// *****************************************************************************
// Purpose        update discount
// Inputs
// Remarks
// Returns
function dscUpdateOrderPriceDiscount$discount_id$price_range$percent_discount )
{
        
$q=db_query"select price_range, percent_discount from ".ORDER_PRICE_DISCOUNT_TABLE.
                        
" where price_range=".xEscSQL($price_range)." AND discount_id <> ".xEscSQL($discount_id));
        if ( (
$row=db_fetch_row($q)) )
                return 
false;
        else
        {
                
db_query("update ".ORDER_PRICE_DISCOUNT_TABLE.
                        
" set price_range=".xEscSQL($price_range).", percent_discount=".xEscSQL($percent_discount)." ".
                        
" where discount_id=".(int)$discount_id);
                return 
true;
        }
}

?>
Онлайн: 1
Реклама