Descuentirijillos

mail@pastecode.io avatar
unknown
php
a year ago
3.4 kB
1
Indexable
Never
 <?php
 foreach( $reserva["cliente"]["descuentos"] as $descuento ){
    array_push($this->track,['mensaje' => 'Se evalua el descuento.', 'descuento' => $descuento, 'controller' => 'ReservaController' , 'line' => '124']); //🚩
    if ( $descuento["id_lugar"] > 0   &&  $descuento["id_lugar"] !== $id_lugar ) continue; //Si no pertenece al lugar salta el descuento
    if ( $descuento["id_tramo"] > 0   &&  $descuento["id_tramo"] !== $id_tramo ) continue; //Si no pertenece al tramo salta el descuento
    if ( $descuento["id_forma_pago"] > 0  &&  $descuento["id_forma_pago"] !== $this->TIPO_FORMA_PAGO_WEBPAY ) continue; //Si no corresponde a la forma de pago salta el descuento
    if ( $descuento["condicion"] !== NULL && count( $datos["vehiculos"] ) > 0 ){
        //Valida campo condición del descuento (patente) solo si existe vehículo
        $ivehiculo = 0;
        foreach( $datos["vehiculos"] as $vehiculo ){
            if ( $descuento["id_item"] > 0  &&  ( $descuento["id_item"] !== $vehiculo["tarifa"]["item"]["id_item"] ) ) continue;
            //recorre los vehículos de la reserva
            $condicion = "PATENTE=".$vehiculo["patente"];
            
            //Hace un split de las condiciones del descuento
            $condiciones_patentes = explode(";",$descuento['condicion']);

            $aplica_descuento = false;
            foreach($condiciones_patentes as $patente){
                //recorre patentes de condicion del descuento y lo compara con la variable $condicion que sería PATENTE=lapatentedelvehiculo.
                $aplica_descuento = strtoupper($patente) == strtoupper($condicion);
            }

            //if ( strtoupper($condicion) == strtoupper($descuento["condicion"]) ) {
            if ( $aplica_descuento ) {
                array_push($this->track,['mensaje' => 'descuento aplicado.', 'descuento' => $descuento, 'controller' => 'ReservaController' , 'line' => '149']); //🚩
                //Si es que el descuento corresponde, se agrega al objeto del vehiculo asociado
                $this->descuento_monto_cliente += $descuento["cantidad"];
                $datos["vehiculos"][$ivehiculo]->descuento_aplicado_vehiculo = [
                    'tipo' => $descuento["tipo"],
                    'subtipo' => $descuento["subtipo"],
                    'cantidad' => $descuento["cantidad"]
                ];
            } else {
                array_push($this->track,['mensaje' => 'No se aplica descuento a vehículo.', 'vehiculo' => $datos["vehiculos"][$ivehiculo], 'controller' => 'ReservaController' , 'line' => '149']); //🚩
                $datos["vehiculos"][$ivehiculo]["descuento_aplicado_vehiculo"] = null;
            }
            $ivehiculo++;
        }
    }else{
        array_push($this->track,['mensaje' => 'descuento global aplicado.', 'descuento' => $descuento, 'controller' => 'ReservaController' , 'line' => '149']); //🚩
        //si aun quedan descuentos sin condicion de patente se agregan al objeto de la reserva y se aplican a todas las tarifas de vehiculos
        $this->descuento_monto_cliente += $descuento["cantidad"];
        $datos["reserva"]["descuento_aplicado_cliente"] = [
            'tipo' => $descuento["tipo"],
            'subtipo' => $descuento["subtipo"],
            'cantidad' => $descuento["cantidad"]
        ];
    }
}