2016-12-29 2 views
0

J'utilise opencart version 2.3.0.2 ..Calcul Opencart lors de l'application de la valeur du coupon?

où je reçois toutes les valeurs sauf quand i valeur du coupon les valeurs fiscales se trompent et l'affichage des valeurs aussi mal.

Je veux chaque produit taxe avant d'appliquer coupon et rabais-unité après l'application de la valeur du coupon.

je écrire quelque chose de ci-dessous, mais pas en mesure d'obtenir des valeurs correctes avec l'unité de réduction .. en utilisant ci-dessous le code im obtenir montant total d'escompte, je veux taxe d'escompte individuel et le montant d'escompte lors de l'application valeur du coupon

$this->load->model('extension/total/coupon'); 

      $coupon_info = $this->model_extension_total_coupon->getCoupon($this->session->data['coupon']); 
      if(isset($coupon_info) && !empty($coupon_info)) 
      { 
      foreach($product as $taxpro) { 


       if($coupon_info['type'] == 'F') 
         { 
          $discount = $coupon_info['discount'] * ($taxpro['total']/$sub_total); 
         } else 
         if ($coupon_info['type'] == 'P') 
         { 
          $discount = $taxpro['total']/100 * $coupon_info['discount']; 
         } 

      $tax_rates = $this->tax->getRates($taxpro['total'] - ($taxpro['total'] - $discount), $taxpro['tax_class_id']); 
      foreach ($tax_rates as $tax_rate) 
          { 
           echo "<pre>"; print_r($total_data['taxes'][$tax_rate['tax_rate_id']]);echo "<pre>"; 
           if ($tax_rate['type'] == 'P') 
           { 

            $total_data['taxes'][$tax_rate['tax_rate_id']] -= $tax_rate['amount']; 
           } 



           echo "<pre>"; print_r($total_data['taxes'][$tax_rate['tax_rate_id']]); 
          } 


      foreach($tax_rates as $tax_coupon) 
      { 
       $protax = $tax_coupon['amount']; 

       $protax_unit = round($protax*$taxpro['quantity'],2); 
       $total_unit_tax += $protax_unit; 

       $coupon_tax += $tax_coupon['amount']; 
      } 
      } 

      } 

Répondre

0

Vous devrez enregistrer tous les produits avec les taxes. J'ai omis beaucoup de code pour le rendre plus clair sur la façon de penser

Exemple:

<?php 
$prepareDiscount = array(); 
foreach ($products as $product){ 
$prepareDiscount[$taxRateForProduct] = $productTotal; 

} 

Ensuite, vous aurez besoin d'itérer sur le tableau prepareDiscounts:

$total = $totalfromOrder; 
$coupon_info = $this->model_extension_total_coupon->getCoupon($this->session->data['coupon']); 

foreach($prepareDiscount as $taxRate => $value){ 
$discountPercentForRate = $value/$total; 
$discountForRate = $discountPercentForRate * $coupon_info['discount']; 
// Now you have the taxRate And the part of the discount which have that rate 
} 

C'est un exemple de code. Si vous êtes intéressé par plus de profondeur, vérifiez comment les passerelles de paiement l'ont fait. La clé pour que tout cela fonctionne est juste de préparer les réductions lors de l'itération sur les produits.