<?php

namespace app\controllers;

use Yii;
use app\models\Liquidaciones;
use app\models\LiquidacionesSearch;
use app\controllers\AuthMgrController;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\helpers\Json;

/**
 * LiquidacionesCalculosController implements the CRUD actions for Liquidaciones model.
 */
class LiquidacionesCalculosController extends LiquidacionesController
{
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
        ];
    }

 public function actionGetLiquidacionComision($liquidaciones_id) {

        
            $result= \Yii::$app->db->createCommand("SELECT COALESCE(calcula_comision_liquidacion_nv($liquidaciones_id),0) AS comision_liquidacion")->queryOne() ;


            $r['comision_liquidacion'] = $result ? $result["comision_liquidacion"]  : 0 ;
        

        return Json::encode($r); ;
    }

 public function actionGetLiquidacionValores($liquidaciones_id) {

        $query_kms_ruta = "SELECT COALESCE(SUM(rutas.kilometros), 0) AS kms_ruta FROM remisiones 
                                LEFT JOIN rutas ON ( rutas.id = remisiones.rutas_id )
                            WHERE remisiones.id = $liquidaciones_id" ;

        $query_rendimiento = "SELECT unidades.rendimiento, unidades.km_odometro_final FROM remisiones
                                    LEFT JOIN unidades ON ( unidades.id = remisiones.unidades_id )
                                  WHERE remisiones.id = $liquidaciones_id" ;

        $query_combustible = "SELECT COALESCE(SUM(litros), 0) AS litros, COALESCE(SUM(importe), 0) AS importe FROM remisiones_combustibles_detalle
        							LEFT JOIN remisiones ON (remisiones.id = remisiones_combustibles_detalle.remisiones_id)
                                    LEFT JOIN unidades ON (unidades.id = remisiones.unidades_id )
                                WHERE remisiones_combustibles_detalle.remisiones_id = $liquidaciones_id
                                    AND unidades.tipo <> 'Caja Refrigerada'
        							AND remisiones_combustibles_detalle.estatus IN ('Autorizado', 'Capturado')" ;

        $query_combustible_thermo = "SELECT COALESCE(SUM(litros), 0) AS litros, COALESCE(SUM(importe), 0) AS importe FROM combustibles
                                         LEFT JOIN unidades ON (unidades.id = combustibles.unidades_id )
                                      WHERE combustibles.remisiones_id = $liquidaciones_id
                                          AND unidades.tipo = 'Caja Refrigerada'
        								  AND combustibles.estatus='Autorizado'" ;

        $query_egresos = "SELECT COALESCE(SUM(importe), 0) AS importe 
                                        FROM remisiones_egresos_detalle 
                                        WHERE remisiones_id = $liquidaciones_id 
                                            AND tipo_egreso <> 'Nota de Cargo'
                                            AND estatus in ('Autorizado', 'Capturado')
                                    " ;
        $query_egresos_nc = "SELECT COALESCE(SUM(importe), 0) AS importe 
                                        FROM remisiones_egresos_detalle 
                                        WHERE remisiones_id = $liquidaciones_id 
                                            AND tipo_egreso = 'Nota de Cargo'
                                            AND estatus in ('Autorizado', 'Capturado')
                                    " ;

        $query_maniobras_extras = "SELECT COALESCE(SUM(importe), 0) AS importe
								        FROM remisiones_maniobras_extras_detalle
								        WHERE remisiones_id = $liquidaciones_id
								        AND estatus in ('Autorizada', 'Capturada')
								        " ;
        
        $result= \Yii::$app->db->createCommand($query_kms_ruta)->queryOne() ;
        $r["kms_ruta"] = $result ? $result['kms_ruta'] : 0 ;

        $result= \Yii::$app->db->createCommand($query_rendimiento)->queryOne() ;
        $r["rendimiento"] = $result ? $result['rendimiento'] : 0 ;
        $r["km_odometro_final"] = $result ? $result['km_odometro_final'] : 0 ;

        $result= \Yii::$app->db->createCommand($query_combustible)->queryOne() ;
        $r["combustible_litros"] = $result ? $result['litros'] : 0 ;
        $r["combustible_importe"] = $result ? $result['importe'] : 0 ; 

        $result= \Yii::$app->db->createCommand($query_combustible_thermo)->queryOne() ;
        $r["combustible_thermo_litros"] = $result ? $result['litros'] : 0 ;
        $r["combustible_thermo_importe"] = $result ? $result['importe'] : 0 ; 


        $result= \Yii::$app->db->createCommand($query_egresos)->queryOne() ;
        $r["egresos"] = $result ? $result['importe'] : 0 ; 

        $result= \Yii::$app->db->createCommand($query_egresos_nc)->queryOne() ;
        $r["egresos_nc"] = $result ? $result['importe'] : 0 ; 

        $result= \Yii::$app->db->createCommand($query_maniobras_extras)->queryOne() ;
        $r["maniobras_extras"] = $result ? $result['importe'] : 0 ;
        
    return Json::encode($r); ;
}
 public function actionGetPrestamoOperador($liquidaciones_id = 'null', $operadores_id) {

            $query_prestamos = "SELECT prestamos_operadores.id, prestamos_operadores.importe, prestamos_operadores.importe - COALESCE(a.total_abonos, 0) AS saldo
                                    FROM prestamos_operadores
                                    LEFT JOIN (
                                            SELECT remisiones.lq_prestamos_operadores_id AS id, SUM(remisiones.egresos_prestamos_descontado) as total_abonos
                                                FROM remisiones
                                                   WHERE remisiones.operadores_id = $operadores_id AND remisiones.id <> $liquidaciones_id AND  remisiones.estatus <> 'Cancelada'
                                                   GROUP BY remisiones.lq_prestamos_operadores_id )
                                        AS a ON (a.id = prestamos_operadores.id)
                                   WHERE prestamos_operadores.estatus = 'Autorizado' AND prestamos_operadores.operadores_id = $operadores_id 
                                   ORDER BY prestamos_operadores.id" ;
        
            $result= \Yii::$app->db->createCommand($query_prestamos)->queryOne() ;

            $r['code'] = 100 ;
            if ($result) {
                $r['code'] = 0 ;
                $r['prestamos_operadores_id'] = $result['id'] ;
                $r['importe'] = $result['importe'] ;
                $r['saldo'] = $result['saldo'] ;
            }        

        return Json::encode($r); ;
    } 
    
    public function actionGeneraCompraOperador($liquidaciones_id) {
    	$q = "SELECT compra_operador_from_liquidacion($liquidaciones_id, NULL) AS compras_operadores_id" ;
    
    	if ( empty($liquidaciones_id) || $liquidaciones_id < 0 ) {
    		return Json::encode(['code' => 100]) ;
    	}
    	$result= \Yii::$app->db->createCommand($q)->queryOne() ;
    	if ( ! $result ) {
    		return Json::encode(['code' => 200]) ;
    	}
    
    	if ($result['compras_operadores_id'] > 0) {
    		//$result2 = \Yii::$app->db->createCommand("INSERT INTO facturas_remisiones (facturas_id, remisiones_id) VALUES (" . $result['facturas_id'] . ", $remisiones_id)")->queryOne() ;
//     		$result2 = \Yii::$app->db->createCommand()->insert('facturas_remisiones', [
//     				'facturas_id' =>  $result['facturas_id'],
//     				'remisiones_id' => $remisiones_id,
//     		])->execute();
    		$result3 = \Yii::$app->db->createCommand("SELECT compra_operador FROM compras_operadores WHERE id =" . $result['compras_operadores_id'])->queryOne() ;
    		$result['compra_operador'] = $result3['compra_operador'] ;
    	}
    
    	return Json::encode(array_merge(['code' => 0], $result) );
    
    }
}
