Ejemplo n.º 1
0
 public static function aplicarDescuentos($visitante = False)
 {
     // Aplica descuento
     $descuento = Descuentos::model()->findByPk(Yii::app()->session['descuento']['DescuentosId']);
     $usados = 0;
     if (isset($descuento)) {
         if (!$visitante) {
             $visitante = Utils::getVisitante();
         } else {
             $visitante = Visitantes::model()->findByPk($visitante);
         }
         $contador = 0;
         $tempPrecios = $visitante->getPreciosTemporales();
         foreach ($tempPrecios as $tmp) {
             if ($descuento->validarDescuento($tmp)) {
                 switch ($descuento->DescuentosPat) {
                     case 'EFECTIVO':
                         if ($tmp->VentasCosBolDes != $descuento->DescuentosCan) {
                             $usados += 1;
                             $tmp->VentasCosBolDes = floor($descuento->DescuentosCan);
                         }
                         break;
                     case 'PORCENTAJE':
                         if ($tmp->VentasCosBolDes != $tmp->VentasCosBol * $descuento->DescuentosCan * 0.01) {
                             $usados += 1;
                             $tmp->VentasCosBolDes = floor($tmp->VentasCosBol * $descuento->DescuentosCan * 0.01);
                             if (strcasecmp($descuento->DescuentoCargo, "si") == 0) {
                                 //Si aplica al cargo por servicio
                                 $tmp->VentasCarSerDes = floor($tmp->VentasCarSer * $descuento->DescuentosCan * 0.01);
                             }
                         }
                         break;
                     case '2X1':
                     case '3X2':
                         $contador += 1;
                         if ($tmp->VentasCosBolDes == $tmp->VentasCosBol) {
                             $usados -= 1;
                             $tmp->VentasCosBolDes = 0;
                             $tmp->VentasCarSerDes = 0;
                         }
                         if ($contador % $descuento->DescuentosPat[0] == 0) {
                             if (Descuentos::validarDescuento($tmp)) {
                                 $usados += 1;
                                 $tmp->VentasCosBolDes = $tmp->VentasCosBol;
                                 if (strcasecmp($descuento->DescuentoCargo, "si") == 0) {
                                     //Si aplica al cargo por servicio
                                     $tmp->VentasCarSerDes = $tmp->VentasCarSer;
                                 }
                             }
                         } else {
                             $tmp->VentasCosBolDes = 0;
                             $tmp->VentasCarSerDes = 0;
                         }
                         break;
                     default:
                         return 0;
                         break;
                 }
                 //endswitch
                 $tmp->update();
             } elseif ($tmp->VentasCosBolDes > 0) {
                 $usados -= 1;
                 $tmp->VentasCosBolDes = 0;
                 $tmp->update();
             }
         }
         //endforeach precio temporal
         //$descuento->DescuentosUso+=$usados;
         //$descuento->update();
     }
     //endif existe un descuento en sesion
     return $usados;
     //$tempPrecios->save(false);
 }