<?php
//Incluimos conexion a la base de trader_cdlrisefall3methods
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
require "../config/Conexion.php";
date_default_timezone_set('America/Lima');


Class Venta
{
  //Implementando nuestro constructor
  public function __construct()
  {


  }
  public function insertar($idpersona,$idusuario,$nrocorrelativo,$nroguia,$fecha_hora,$tipo_comprobante,$total_venta,$total_igv,$subtotal_total,$tipopago,$idbanco,$leyenda,$tipoventa,$idalmacen,$idtitular,$tipo_servicio,$total_servicio,$total_envio,$idalmacen_central_venta, $tipo_salida, $idproducto_venta, $precio_ventav, $cantidad_venta) {


    global $conexion;

    try{
         $conexion->begin_transaction();
    
          $idbanco = !empty($idbanco) ? intval($idbanco) : '0';
          $idtitular = !empty($idtitular) ? intval($idtitular) : '0';
          $tipo_servicio = !empty($tipo_servicio) ? intval($tipo_servicio) : '0';
          $total_servicio = !empty($total_servicio) ? intval($total_servicio) : '0';
          $total_envio = !empty($total_envio) ? intval($total_envio) : '0';

          if($tipoventa == 1){
            $sql1 = "INSERT INTO venta (idpersona,idusuario,codigotipo_comprobante,leyenda,nrocorrelativo,nroguia,total_venta,total_igv,total_gravado,tipo_pago,idbanco,idtitular,estado_venta,fecha_hora,tipoventa,tipo_servicio,total_servicio,total_envio) 
            VALUES ('$idpersona', '$idusuario', '$tipo_comprobante', '$leyenda', '$nrocorrelativo', '$nroguia', '$total_venta', '$total_igv', '$subtotal_total', '$tipopago', '$idbanco','$idtitular','2','$fecha_hora','$tipoventa','$tipo_servicio','$total_servicio','$total_envio')";
            $idventa1 = ejecutarConsulta_retornarID($sql1);
            if (!$idventa1) {
              die("Error: No se pudo insertar la venta.");
            }

            $sql_ingreso="INSERT INTO ingreso (idventa,idusuario,idcaja,descripcion,tipo_pago,idbanco,idtitular,monto_pagado,cerrado,fecha_pago) 
            VALUES('$idventa1','$idusuario','0','PAGO TOTAL DE PRODUCTOS','$tipopago','$idbanco','$idtitular','$total_venta','0','$fecha_hora')";
            ejecutarConsulta($sql_ingreso);
          }else{
           // Registrar el primer producto
            $sql2 = "INSERT INTO venta (idpersona,idusuario,codigotipo_comprobante,leyenda,nrocorrelativo,nroguia,total_venta,total_igv,total_gravado,tipo_pago,idbanco,idtitular,estado_venta,fecha_hora,tipoventa,tipo_servicio,total_servicio,total_envio) 
            VALUES ('$idpersona', '$idusuario', '$tipo_comprobante', '$leyenda', '$nrocorrelativo', '$nroguia', '$total_venta', '$total_igv', '$subtotal_total', '0', '$idbanco','$idtitular','1','$fecha_hora','$tipoventa','$tipo_servicio','$total_servicio','$total_envio')";
            $idventa1 = ejecutarConsulta_retornarID($sql2);
            if (!$idventa1) {
              die("Error: No se pudo insertar la venta.");
            }
          }
          // Insertar detalle para el primer producto
          $num_elementos = 0;
          $sw = true;
          
          while ($num_elementos < count($idalmacen_central_venta)) {
                $tipo = $tipo_salida[$num_elementos]; // obtenemos el tipo de salida actual
                // Siempre insertar el detalle
                $sql_detalle = "INSERT INTO detalle_venta (idventa, idalmacen_central, precio, cantidad, estado, tipo_salida) 
                                VALUES ('$idventa1',  '$idalmacen_central_venta[$num_elementos]' , '$precio_ventav[$num_elementos]' ,'$cantidad_venta[$num_elementos]', '1', '$tipo')";
                
                if (!ejecutarConsulta($sql_detalle)) {
                    throw new Exception("Error al insertar en detalle_venta");
                }
                // Solo si tipo_salida == 1 se hacen los updates
                if ($tipo == 1) {
                    $sql_update_almacen = "UPDATE almacen_central 
                                          SET cantidad = cantidad - '$cantidad_venta[$num_elementos]' 
                                          WHERE idalmacen_central = '$idalmacen_central_venta[$num_elementos]'";
                    if (!ejecutarConsulta($sql_update_almacen)) {
                        throw new Exception("Error al actualizar stock almacen_central");
                    }
                    $sql_update_inventario = "UPDATE inventario_almacen 
                                              SET salida = salida + '$cantidad_venta[$num_elementos]' 
                                              WHERE idproducto = '$idproducto_venta[$num_elementos]' AND idalmacen = '$idalmacen'";

                    if (!ejecutarConsulta($sql_update_inventario)) {
                        throw new Exception("Error al actualizar stock inventario_almacen");
                    }
                }
                $num_elementos++;
            }
            $conexion->commit();
            return true;

    } catch (Exception $e) {
       
       $conexion->rollback();
       echo "Error: " . $e->getMessage();
       echo "Archivo: " . $e->getFile();
       echo "Linea: " . $e->getLine();
       return false;
   }
  }

  public function editar($idventa,$idpersona,$idusuario,$nrocorrelativo,$nroguia,$fecha_hora,$tipo_comprobante,$total_venta,$total_igv,$subtotal_total,$tipopago,$idbanco,$leyenda,$tipoventa,$idalmacen,$idtitular,$tipo_servicio,$total_servicio,$total_envio,$idalmacen_central_venta, $tipo_salida,$idproducto_venta, $precio_ventav, $cantidad_venta) {
      
       $idbanco = !empty($idbanco) ? intval($idbanco) : '0';
       $tipopago = !empty($tipopago) ? intval($tipopago) : '0';
       $idtitular = !empty($idtitular) ? intval($idtitular) : '0';
       $tipo_servicio = !empty($tipo_servicio) ? intval($tipo_servicio) : '0';
       $total_servicio = !empty($total_servicio) ? intval($total_servicio) : '0';
       $total_envio = !empty($total_envio) ? intval($total_envio) : '0';
    
      $sql_venta = "SELECT tipoventa  FROM venta WHERE idventa = '$idventa'";
      $resultado = ejecutarConsultaSimpleFila($sql_venta);
      $venta_tipo = $resultado['tipoventa'];

       if($venta_tipo == $tipoventa){
        $update_venta="UPDATE venta SET idpersona='$idpersona',nroguia='$nroguia',fecha_hora='$fecha_hora',leyenda='$leyenda',total_venta='$total_venta',total_igv='$total_igv', total_gravado='$subtotal_total',tipo_pago='$tipopago',idbanco='$idbanco',idtitular='$idtitular',tipoventa='$tipoventa', tipo_servicio='$tipo_servicio', total_servicio='$total_servicio', total_envio='$total_envio',fecha_pedido=NULL 
        WHERE idventa='$idventa'";
        $resultado = ejecutarConsulta($update_venta);


        $eliminacion_ingreso="DELETE FROM ingreso where idventa='$idventa'";
        ejecutarConsulta($eliminacion_ingreso);

        $sql_ingreso="INSERT INTO ingreso (idventa,idusuario,idcaja,descripcion,tipo_pago,idbanco,idtitular,monto_pagado,cerrado,fecha_pago) 
        VALUES('$idventa','$idusuario','0','PAGO TOTAL DE PRODUCTOS','$tipopago','$idbanco','$idtitular','$total_venta','0','$fecha_hora')";
         ejecutarConsulta($sql_ingreso);

       }else if($venta_tipo == '1' and $tipoventa == '2'){

        $update_venta="UPDATE venta SET idpersona='$idpersona',nroguia='$nroguia',fecha_hora='$fecha_hora',leyenda='$leyenda',total_venta='$total_venta',total_igv='$total_igv', total_gravado='$subtotal_total',tipo_pago='$tipopago',idbanco='$idbanco',idtitular='$idtitular',tipoventa='$tipoventa', tipo_servicio='$tipo_servicio', total_servicio='$total_servicio', total_envio='$total_envio',fecha_pedido=NULL 
        WHERE idventa='$idventa'";
        ejecutarConsulta($update_venta); 

        $eliminacion_ingreso="DELETE FROM ingreso where idventa='$idventa'";
        ejecutarConsulta($eliminacion_ingreso);

       }else if ($venta_tipo == '2' and $tipoventa='1'){
        $update_venta="UPDATE venta SET idpersona='$idpersona',nroguia='$nroguia',fecha_hora='$fecha_hora',leyenda='$leyenda',total_venta='$total_venta',total_igv='$total_igv', total_gravado='$subtotal_total',tipo_pago='$tipopago',idbanco='$idbanco',idtitular='$idtitular',tipoventa='$tipoventa', tipo_servicio='$tipo_servicio', total_servicio='$total_servicio', total_envio='$total_envio',fecha_pedido=NULL 
        WHERE idventa='$idventa'";
        ejecutarConsulta($update_venta); 

        $eliminacion_ingreso="DELETE FROM ingreso where idventa='$idventa'";
        ejecutarConsulta($eliminacion_ingreso);

        $sql_ingreso="INSERT INTO ingreso (idventa,idusuario,idcaja,descripcion,tipo_pago,idbanco,idtitular,monto_pagado,cerrado,fecha_pago) 
        VALUES('$idventa','$idusuario','0','PAGO TOTAL DE PRODUCTOS','$tipopago','$idbanco','$idtitular','$total_venta','0','$fecha_hora')";
         ejecutarConsulta($sql_ingreso);
       }

    
              
    
    $sql = "SELECT d.cantidad,d.idalmacen_central,a.idproducto FROM detalle_venta d join almacen_central a on d.idalmacen_central=a.idalmacen_central 
    WHERE d.idventa='$idventa' and d.tipo_salida='1'";
    $resultado = ejecutarConsulta($sql);

        // Verificar si hay resultados
    if ($resultado) {
        while ($fila = $resultado->fetch_assoc()) { // Iterar sobre cada fila de los resultados
            $idalmacen1 = $fila['idalmacen_central'];
            $cantidada = $fila['cantidad'];
            $idpro = $fila['idproducto'];

              $update_stock = "UPDATE almacen_central SET cantidad = cantidad + '$cantidada' WHERE idalmacen_central='$idalmacen1' ";
              ejecutarConsulta($update_stock);

              $update_inventario = "UPDATE inventario_almacen SET salida = salida - '$cantidada' WHERE idproducto='$idpro' and idalmacen='$idalmacen' ";
              ejecutarConsulta($update_inventario);
          }
      }

            $sql_delete = "DELETE FROM detalle_venta WHERE idventa='$idventa'";
            ejecutarConsulta($sql_delete);
            $num_elementos = 0;
            $sw = true;
            while ($num_elementos < count($idalmacen_central_venta)) {

               $tipo = $tipo_salida[$num_elementos]; // obtenemos el tipo de salida actual

                            $sql_detalle = "INSERT INTO detalle_venta (idventa, idalmacen_central, precio, cantidad, estado, tipo_salida) 
                            VALUES ('$idventa',  '$idalmacen_central_venta[$num_elementos]' , '$precio_ventav[$num_elementos]' ,'$cantidad_venta[$num_elementos]', '1', '$tipo')";
                            if (!ejecutarConsulta($sql_detalle)) {
                                throw new Exception("Error al insertar en detalle_venta");
                            };

                           // Solo si tipo_salida == 1 se hacen los updates
                          if ($tipo == 1) {
                              $sql_update_almacen = "UPDATE almacen_central 
                                                    SET cantidad = cantidad - '$cantidad_venta[$num_elementos]' 
                                                    WHERE idalmacen_central = '$idalmacen_central_venta[$num_elementos]'";
                              if (!ejecutarConsulta($sql_update_almacen)) {
                                  throw new Exception("Error al actualizar stock almacen_central");
                              }
                              $sql_update_inventario = "UPDATE inventario_almacen 
                                                        SET salida = salida + '$cantidad_venta[$num_elementos]' 
                                                        WHERE idproducto = '$idproducto_venta[$num_elementos]' AND idalmacen = '$idalmacen'";

                              if (!ejecutarConsulta($sql_update_inventario)) {
                                  throw new Exception("Error al actualizar stock inventario_almacen");
                              }
                          }
                          $num_elementos++;
                        }
            return $sw;
          
    
  }
   
    public function listar_venta()
    {
      $sql="SELECT c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,c.total_venta,c.tipo_pago,c.created_at,c.estado_venta,u.nombre as usuario,c.tipoventa,c.total_envio,c.total_servicio 
             FROM venta c 
             JOIN persona p ON c.idpersona=p.idpersona
             JOIN usuario u ON c.idusuario=u.idusuario
             WHERE nrocorrelativo >0";
      return ejecutarConsulta($sql);

    }

    public function listar_ultimo()
    {
      $queryVentas="SELECT * FROM (
                        SELECT 
                            c.idventa,
                            c.nrocorrelativo,
                            c.nroguia,
                            p.nombre as cliente,
                            c.total_venta,
                            c.tipo_pago,
                            c.created_at,
                            c.estado_venta,
                            u.nombre as usuario,
                            c.total_igv,
                            c.total_gravado,
                            c.fecha_hora
                        FROM 
                            venta c 
                        JOIN 
                            persona p ON c.idpersona = p.idpersona 
                        JOIN 
                            usuario u ON c.idusuario = u.idusuario 
                        ORDER BY 
                            c.idventa DESC 
                        LIMIT 10
                    ) AS sub
                    ORDER BY idventa ASC";
            $resultVentas = ejecutarConsulta($queryVentas);

             $ventas = [];
             while ($row = $resultVentas->fetch_assoc()) {
             $ventas[] = $row;
             }

             return [
              "ventas" => $ventas
              ];

    }

    public function listar_venta_vendedor($idusuario)
    {
      $sql="SELECT c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,c.total_venta,c.tipo_pago,c.created_at,c.estado_venta,c.tipoventa FROM venta c JOIN persona p ON c.idpersona=p.idpersona WHERE c.idusuario='$idusuario'";
      return ejecutarConsulta($sql);

    }

    public function listar_stock($idalmacen)
    {
      $sql="SELECT a.idalmacen,a.idalmacen_central,a.idtipo_prenda,a.idproducto,a.idtalla,a.idcombinacion_color,p.precio,p.nombre as producto,o.nombre as color1,r.nombre as color2,t.nombre as talla,a.cantidad as stock
            FROM almacen_central a JOIN producto p on a.idproducto=p.idproducto JOIN combinacion_color c ON a.idcombinacion_color=c.idcombinacion_color JOIN color o ON c.idcolor=o.idcolor JOIN color r ON c.idcolor=r.idcolor JOIN talla t ON a.idtalla=t.idtalla
            WHERE a.idalmacen='$idalmacen' and a.cantidad >0";
      return ejecutarConsulta($sql);

    }
    public function mostrar_venta($idventa)
    {
        $queryVentas="SELECT v.idventa,v.nrocorrelativo,v.nroguia,v.total_venta,v.total_igv,v.total_gravado,v.fecha_hora,v.idpersona,v.codigotipo_comprobante,v.tipo_pago,v.idbanco,v.tipoventa,v.idtitular,v.estado_venta,v.tipo_servicio, v.total_servicio, v.total_envio 
            FROM venta v
            WHERE v.idventa='$idventa'";
            $resultVentas = ejecutarConsulta($queryVentas);

            $ventas = [];
            while ($row = $resultVentas->fetch_assoc()) {
            $ventas[] = $row;
            }

            $queryDetalles="SELECT d.precio,d.cantidad,d.idalmacen_central,p.nombre as producto,t.nombre as talla,r.nombre as idcolor,o.nombre as color1,a.cantidad as stock,a.idproducto, d.tipo_salida  
             FROM detalle_venta d 
             JOIN almacen_central a ON d.idalmacen_central=a.idalmacen_central
             JOIN producto p ON a.idproducto=p.idproducto
             JOIN talla t ON a.idtalla=t.idtalla
             JOIN combinacion_color c ON a.idcombinacion_color=c.idcombinacion_color
             JOIN color r ON c.idcolor=r.idcolor 
             JOIN color o ON c.color1=o.idcolor 
            WHERE d.idventa='$idventa' ";
            $resulDetalles= ejecutarConsulta($queryDetalles);

            $detalles = [];
            while ($row = $resulDetalles->fetch_assoc()) {
            $detalles[] = $row;
            }
            // Respuesta JSON
            return [
            "ventas" => $ventas,
            "detalles" => $detalles
            ];
    }

    //Implementamos un metodo para eliminar registro
    public function eliminar($idventa)
    {

      $sql = "SELECT d.cantidad,d.idalmacen_central,a.idproducto FROM detalle_venta d join almacen_central a on d.idalmacen_central=a.idalmacen_central WHERE d.idventa='$idventa' and d.tipo_salida='1'";
      $resultado = ejecutarConsulta($sql);

          // Verificar si hay resultados
      if ($resultado) {
          while ($fila = $resultado->fetch_assoc()) { // Iterar sobre cada fila de los resultados
              $idalmacen = $fila['idalmacen_central'];
              $cantidada = $fila['cantidad'];
              $idpro = $fila['idproducto'];

                $update_stock = "UPDATE almacen_central SET cantidad = cantidad + '$cantidada' WHERE idalmacen_central='$idalmacen' ";
                ejecutarConsulta($update_stock);

                $update_inventario = "UPDATE inventario_almacen SET salida = salida - '$cantidada' WHERE idproducto='$idpro' ";
                ejecutarConsulta($update_inventario);
            }
        }

        $sql_delete_detalle="DELETE FROM detalle_venta where idventa='$idventa'";
         ejecutarConsulta($sql_delete_detalle);

        $sql_delete="DELETE FROM venta where idventa='$idventa'";
        return ejecutarConsulta($sql_delete);
    }

    public function selectbanco()
    {
      $sql="SELECT * FROM banco";
      return ejecutarConsulta($sql);
    }

    public function grafico_venta()
    {
      $queryVentas="SELECT MONTH(v.fecha_hora) AS mes,SUM(v.total_venta) AS total_ventas
      FROM venta v 
      WHERE YEAR(v.fecha_hora) = YEAR(CURDATE())
      GROUP BY MONTH(fecha_hora) ORDER BY mes";
      $resultVentas = ejecutarConsulta($queryVentas);

      $ventas = array_fill(0, 12, 0);

      // Recorremos los resultados y asignamos los valores al mes correspondiente
      while ($row = $resultVentas->fetch_assoc()) {
          $mes = (int)$row['mes']; // Obtenemos el número de mes (1-12)
          $ventas[$mes - 1] = (float)$row['total_ventas']; // Restamos 1 porque el array es 0-indexado
      }
        // Respuesta JSON
        return [
        "ventas" => $ventas
        ];

    }

    public function grafico_top(){
      $sql = "SELECT 
                  o.nombre AS producto,
                  SUM(d.cantidad) AS total_vendido
              FROM detalle_venta d
              JOIN almacen_central a ON d.idalmacen_central = a.idalmacen_central
              JOIN producto o ON a.idproducto = o.idproducto
              JOIN venta v ON d.idventa = v.idventa
              WHERE MONTH(v.fecha_hora) = MONTH(CURDATE()) AND YEAR(v.fecha_hora) = YEAR(CURDATE())
              GROUP BY o.nombre
              ORDER BY total_vendido DESC
              LIMIT 10";

        $res = ejecutarConsulta($sql);
        $datos = [];

        while ($row = $res->fetch_assoc()) {
          $datos[] = [
              'producto' => $row['producto'],
              'total_vendido' => (int)$row['total_vendido']
          ];
        }
        // Respuesta JSON
        return [
        "datos" => $datos
        ];
    }

  public function listar_fecha_usuario($idusuario,$fecha_inicio, $fecha_fin)
      {
       
        $sql="SELECT c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,i.fecha_pago,i.monto_pagado,i.tipo_pago,c.tipoventa,u.nombre as usuario,b.nombre as banco,t.nombre as titular 
              FROM ingreso i
              JOIN venta c ON i.idventa=c.idventa
              JOIN persona p ON c.idpersona=p.idpersona
              JOIN usuario u ON c.idusuario=u.idusuario
              LEFT JOIN banco b ON b.idbanco=i.idbanco
              LEFT JOIN titular t ON t.idtitular=i.idtitular
              WHERE date(i.fecha_pago)>='$fecha_inicio' and date(i.fecha_pago)<='$fecha_fin' and i.idusuario='$idusuario'
              ORDER BY i.fecha_pago desc";
        $resultVenta = ejecutarConsulta($sql);
            $ventas = [];

        while ($row = $resultVenta->fetch_assoc()) {
        $ventas[] = $row;
        }

        return [
          "ventas" => $ventas
        ];
  }

  public function listar_fecha_titular($idtitular,$fecha_inicio, $fecha_fin)
      {
       
        $sql="SELECT c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,i.fecha_pago,i.monto_pagado,i.tipo_pago,c.tipoventa,u.nombre as usuario,b.nombre as banco,t.nombre as titular 
              FROM ingreso i
              JOIN venta c ON i.idventa=c.idventa
              JOIN persona p ON c.idpersona=p.idpersona
              JOIN usuario u ON c.idusuario=u.idusuario
              LEFT JOIN banco b ON b.idbanco=i.idbanco
              LEFT JOIN titular t ON t.idtitular=i.idtitular
              WHERE date(i.fecha_pago)>='$fecha_inicio' and date(i.fecha_pago)<='$fecha_fin' and t.idtitular='$idtitular'
              ORDER BY i.fecha_pago desc";
        $resultVenta = ejecutarConsulta($sql);
            $ventas = [];

        while ($row = $resultVenta->fetch_assoc()) {
        $ventas[] = $row;
        }

        return [
          "ventas" => $ventas
        ];
  }

  public function listar_por_fecha($fecha_inicio, $fecha_fin)
      {
       
        $sql="SELECT i.idingreso,c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,i.fecha_pago,i.monto_pagado,i.tipo_pago,c.tipoventa,u.nombre as usuario,b.nombre as banco,t.nombre as titular 
              FROM ingreso i
              JOIN venta c ON i.idventa=c.idventa
              JOIN persona p ON c.idpersona=p.idpersona
              JOIN usuario u ON c.idusuario=u.idusuario
              LEFT JOIN banco b ON b.idbanco=i.idbanco
              LEFT JOIN titular t ON t.idtitular=i.idtitular
              WHERE date(i.fecha_pago)>='$fecha_inicio' and date(i.fecha_pago)<='$fecha_fin'
              ORDER BY i.fecha_pago desc";
       $resultVenta = ejecutarConsulta($sql);

       $ventas = [];

        while ($row = $resultVenta->fetch_assoc()) {
        $ventas[] = $row;
        }

        return [
          "ventas" => $ventas
        ];
  }

  public function listar_dia_vendedor($idusuario)
  {
   $hoy = date("Y-m-d");
    $sql="SELECT c.idventa,c.nrocorrelativo,c.nroguia,p.nombre as cliente,i.fecha_pago,i.monto_pagado,i.tipo_pago,c.tipoventa,u.nombre as usuario,b.nombre as banco,t.nombre as titular 
          FROM ingreso i
          JOIN venta c ON i.idventa=c.idventa
          JOIN persona p ON c.idpersona=p.idpersona
          JOIN usuario u ON c.idusuario=u.idusuario
          LEFT JOIN banco b ON b.idbanco=i.idbanco
          LEFT JOIN titular t ON t.idtitular=i.idtitular
          WHERE DATE(i.fecha_pago) = '$hoy' and i.idusuario='$idusuario'";
    return ejecutarConsulta($sql);
  }

  public function mostrar_acuenta($idventa)
    {
            $queryVentas="SELECT v.idventa,v.nrocorrelativo,v.nroguia,v.total_venta,v.total_acuenta,v.total_igv,v.total_gravado,v.fecha_hora,v.idpersona,v.codigotipo_comprobante,v.tipo_pago,v.idbanco 
            FROM venta v
            WHERE v.idventa='$idventa'";
            $resultVentas = ejecutarConsulta($queryVentas);
            $ventas = [];
            while ($row = $resultVentas->fetch_assoc()) {
            $ventas[] = $row;
            }
            $queryDetalles="SELECT * FROM ingreso WHERE idventa='$idventa' ";
            $resulDetalles= ejecutarConsulta($queryDetalles);
            $detalles = [];
            $totalMonto = 0;
            while ($row = $resulDetalles->fetch_assoc()) {
            $detalles[] = $row;
            $totalMonto += $row['monto_pagado'];
            }
            // Agregar totalMonto al array de ventas
            if (!empty($ventas)) {
              $ventas[0]['totalMonto'] = $totalMonto;
            }
            // Respuesta JSON
            return [
            "ventas" => $ventas,
            "detalles" => $detalles
            ];
    }

    public function guardar_pago($idventa,$idusuario,$fecha_pago,$monto,$descripcion,$tipopago,$idbanco,$idtitular,$total_venta)
    {

      //$sql="INSERT INTO detalle_acuenta (idventa,idusuario,descripcion,monto_pagado,tipo_pago,idbanco,fecha_pago) VALUES('$idventa','$idusuario','$descripcion','$monto','$tipopago','$idbanco','$fecha_pago')";
      //ejecutarConsulta($sql);

            $idbanco = !empty($idbanco) ? intval($idbanco) : '0';
            $idtitular = !empty($idtitular) ? intval($idtitular) : '0';
      $sql_ingreso="INSERT INTO ingreso (idventa,idusuario,idcaja,descripcion,tipo_pago,idbanco,idtitular,monto_pagado,cerrado,fecha_pago) 
                   VALUES('$idventa','$idusuario','0','$descripcion','$tipopago','$idbanco','$idtitular','$monto','0','$fecha_pago')";
      ejecutarConsulta($sql_ingreso);

      $sql_acuenta = "SELECT sum(monto_pagado) as monto_pagado FROM ingreso WHERE idventa = '$idventa'";
      $resultado = ejecutarConsultaSimpleFila($sql_acuenta);
      $monto_pagado = $resultado['monto_pagado'];

      if($monto_pagado == $total_venta ){
       
        $update_venta="UPDATE venta SET estado_venta='2' WHERE idventa='$idventa'";
        return ejecutarConsulta($update_venta);
      }else{
        $update_venta="UPDATE venta SET estado_venta='1' WHERE idventa='$idventa'";
        return ejecutarConsulta($update_venta);
      }
      
    }

    public function eliminarDetalle($idingreso)
    {
      $sql_eliminar="DELETE FROM ingreso WHERE idingreso='$idingreso'";
      return ejecutarConsulta($sql_eliminar);

    }
    public function cantidadTotales($fecha_inicio,$fecha_fin,$idusuario)
    {
      $sql_eliminar="SELECT
               SUM(CASE WHEN i.tipo_pago = 1 THEN i.monto_pagado ELSE 0 END) AS total_efectivo,
               SUM(CASE WHEN i.tipo_pago = 2 THEN i.monto_pagado ELSE 0 END) AS total_transferencia
              FROM ingreso i
              WHERE date(i.fecha_pago)>='$fecha_inicio' and date(i.fecha_pago)<='$fecha_fin'";
      return ejecutarConsultaSimpleFila($sql_eliminar);
    }

    public function cantidadTotales_Usuario($fecha_inicio, $fecha_fin, $idusuario)
    {
      $sql_eliminar="SELECT
               SUM(CASE WHEN i.tipo_pago = 1 THEN i.monto_pagado ELSE 0 END) AS total_efectivo,
               SUM(CASE WHEN i.tipo_pago = 2 THEN i.monto_pagado ELSE 0 END) AS total_transferencia
              FROM ingreso i
              WHERE date(i.fecha_pago)>='$fecha_inicio' and date(i.fecha_pago)<='$fecha_fin' i.idusuario='$idusuario' ";
      return ejecutarConsultaSimpleFila($sql_eliminar);
    }

    public function cantidadTotalesusuario($idusuario)
    {
        $hoy = date("Y-m-d");
      $sql_eliminar="SELECT
               SUM(CASE WHEN i.tipo_pago = 1 THEN i.monto_pagado ELSE 0 END) AS total_efectivo,
               SUM(CASE WHEN i.tipo_pago = 2 THEN i.monto_pagado ELSE 0 END) AS total_transferencia
              FROM ingreso i
              WHERE DATE(i.fecha_pago) ='$hoy' and i.idusuario='$idusuario'";
      return ejecutarConsultaSimpleFila($sql_eliminar);
    }

    public function selectTallas($idcombinacion_color,$idproducto,$tipo_salida,$idalmacen)
    {
       if($tipo_salida == 1){
        $sql="SELECT c.idtalla,t.nombre,c.idalmacen_central,c.cantidad FROM  almacen_central c 
                JOIN talla t ON t.idtalla=c.idtalla
                WHERE c.idcombinacion_color='$idcombinacion_color' and c.idproducto='$idproducto' and c.idalmacen='$idalmacen' and c.cantidad >0 ";
          return ejecutarConsulta($sql);
       }else{
            $sql="SELECT c.idtalla,t.nombre,c.idalmacen_central,100 as cantidad FROM  almacen_central c 
            JOIN talla t ON t.idtalla=c.idtalla
            WHERE c.idcombinacion_color='$idcombinacion_color' and c.idproducto='$idproducto' and c.idalmacen='$idalmacen'";
      return ejecutarConsulta($sql);
       }
       
  
    }
    
    public function selectTitular()
    {
      $sql="SELECT * FROM titular";
      return ejecutarConsulta($sql);
    }

      public function listar_manual()
    {
      $sql="SELECT a.idalmacen,a.idalmacen_central,a.idtipo_prenda,a.idproducto,a.idtalla,a.idcombinacion_color,p.precio,p.nombre as producto,o.nombre as color1,r.nombre as color2,t.nombre as talla,a.cantidad as stock
            FROM almacen_central a 
            JOIN producto p on a.idproducto=p.idproducto 
            JOIN combinacion_color c ON a.idcombinacion_color=c.idcombinacion_color 
            JOIN color o ON c.idcolor=o.idcolor 
            JOIN color r ON c.idcolor=r.idcolor 
            JOIN talla t ON a.idtalla=t.idtalla
            WHERE a.idalmacen='1'
            ";
      return ejecutarConsulta($sql);

    }
}

 ?>