Skip to content

Commit

Permalink
Транспортни зони: да може да се дефинира твърда надценка, надценка пер
Browse files Browse the repository at this point in the history
кг и отношение на обем към кг
  • Loading branch information
ivelin1012 committed Aug 20, 2018
1 parent e752d8b commit f8c959c
Showing 1 changed file with 33 additions and 4 deletions.
37 changes: 33 additions & 4 deletions tcost/FeeZones.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,36 @@ public function description()
$this->FLD('deliveryTermId', 'key(mvc=cond_DeliveryTerms, select = codeName)', 'caption=Условие на доставка, mandatory');
$this->FLD('deliveryTime', 'time(uom=days)', 'caption=Доставка,recently,smartCenter');

$this->FLD('addTax', 'double', 'caption=Надценки->Твърда, autohide');
$this->FLD('addPerKg', 'double', 'caption=Надценки->За кг, autohide');
$this->FLD('volume2quantity', 'double', 'caption=Надценки->Обем към кг, autohide');

$this->setDbIndex('deliveryTermId');
}


/**
* Преди показване на форма за добавяне/промяна.
*
* @param core_Manager $mvc
* @param stdClass $data
*/
protected static function on_AfterPrepareEditForm($mvc, &$data)
{
$form = &$data->form;
$form->setField('volume2quantity', "placeholder=" . self::V2C);
$currecyId = acc_Periods::getBaseCurrencyCode();

if($addTax = tcost_Setup::get('ADD_TAX')){
$form->setField('addTax', "placeholder={$addTax},unit={$currecyId}");
}

if($addPerKg = tcost_Setup::get('ADD_PER_KG')){
$form->setField('addPerKg', "placeholder={$addPerKg},unit={$currecyId}");
}
}


/**
* Изпълнява се след подготовката на ролите, които могат да изпълняват това действие.
*
Expand Down Expand Up @@ -202,22 +228,25 @@ public function getTransportFee($deliveryTermId, $singleWeight, $singleVolume, $

$explain = null;
if ($fee > 0) {
$tax = tcost_Setup::get('ADD_TAX');

// Надценките се взимат с приоритет от зоната, ако няма от глобалните настройки
$zoneRec = self::fetch($zoneId, 'addTax,addPerKg,volume2quantity');
$tax = !empty($zoneRec->addTax) ? $zoneRec->addTax : tcost_Setup::get('ADD_TAX');
$addPerKg = !empty($zoneRec->addPerKg) ? $zoneRec->addPerKg : tcost_Setup::get('ADD_PER_KG');

if($totalWeight){
$tax = $tax * $singleWeight / $totalWeight;
}
$inc = tcost_Setup::get('ADD_PER_KG') * $singleWeight;
$inc = $addPerKg * $singleWeight;
$fee = $tax + $inc + $fee;


$zoneName = tcost_FeeZones::getTitleById($zoneId);
$termCode = cond_DeliveryTerms::getVerbal($deliveryTermId, 'codeName');
$explain = "{$termCode}, ZONE = '{$zoneName}', VOLUMIC_WEIGHT = '{$singleWeight}', ADD_TAX = {$tax}, ADD_PER_KG = {$inc}";
}

$res = array('fee' => $fee, 'deliveryTime' => $deliveryTime, 'explain' => $explain);

// Връщане на изчислената цена
return $res;
}
Expand Down

0 comments on commit f8c959c

Please sign in to comment.