<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
if (strlen(session_id()) < 1) session_start();

// Verifica que la sesión esté iniciada correctamente
if (!isset($_SESSION["idusuario"])) {
    echo json_encode(["error" => "Sesión no válida o no iniciada."]);
    exit;
}
require_once('../modelos/Venta.php');

$venta=new Venta();

$idventa=isset($_POST["idventa"])? limpiarCadena($_POST["idventa"]):"";
$idusuario=$_SESSION["idusuario"];
$idalmacen=$_SESSION["idalmacen"];
$fecha_hora=isset($_POST["fecha_hora"])? limpiarCadena($_POST["fecha_hora"]):"";
$nrocorrelativo=isset($_POST["nrocorrelativo"])? limpiarCadena($_POST["nrocorrelativo"]):"";
$nroguia=isset($_POST["nroguia"])? limpiarCadena($_POST["nroguia"]):"";
$tipo_comprobante=isset($_POST["tipo_comprobante"])? limpiarCadena($_POST["tipo_comprobante"]):"";
$idpersona=isset($_POST["idpersona"])? limpiarCadena($_POST["idpersona"]):"";
$total_venta=isset($_POST["total_venta"])? limpiarCadena($_POST["total_venta"]):"";
$total_igv=isset($_POST["total_igv"])? limpiarCadena($_POST["total_igv"]):"";
$subtotal_total=isset($_POST["subtotal_total"])? limpiarCadena($_POST["subtotal_total"]):"";
$tipoventa=isset($_POST["tipoventa"])? limpiarCadena($_POST["tipoventa"]):"";
$tipopago=isset($_POST["tipopago"])? limpiarCadena($_POST["tipopago"]):"";
$idbanco=isset($_POST["idbanco"])? limpiarCadena($_POST["idbanco"]):"";
$fecha_pago=isset($_POST["fecha_pago"])? limpiarCadena($_POST["fecha_pago"]):"";
$monto=isset($_POST["monto"])? limpiarCadena($_POST["monto"]):"";
$descripcion=isset($_POST["descripcion"])? limpiarCadena($_POST["descripcion"]):"";
$idtitular=isset($_POST["idtitular"])? limpiarCadena($_POST["idtitular"]):"";
$tipo_servicio=isset($_POST["tipo_servicio"])? limpiarCadena($_POST["tipo_servicio"]):"";
$total_servicio=isset($_POST["total_servicio"])? limpiarCadena($_POST["total_servicio"]):"";
$total_envio=isset($_POST["total_envio"])? limpiarCadena($_POST["total_envio"]):"";



switch ($_GET["op"])
{
    case 'guardaryeditar':
          require_once "../reportes/numeroALetras.php";
          $letras = NumeroALetras::convertir($total_venta);
          list($num,$cen)=explode('.',$total_venta);
          $leyenda = $letras.'Y '.$cen.'/100 SOLES';
        if(empty($idventa))
        {
          $rspta=$venta->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,$_POST["idalmacen_central_venta"],$_POST["tipo_salida"],$_POST['idproducto_venta'],$_POST['precio_ventav'],$_POST['cantidad_venta']);
          echo $rspta ? "Venta Registrado" : "Venta no se pudo registrar";
        }
        else {
            $rspta=$venta->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,$_POST["idalmacen_central_venta"],$_POST["tipo_salida"],$_POST['idproducto_venta'],$_POST['precio_ventav'],$_POST['cantidad_venta']);
            echo $rspta ? "Venta Actualizada" : "Venta no se pudo actualizar";
        }
      break;

      case 'guardar_pago':
        $rspta=$venta->guardar_pago($idventa,$idusuario,$fecha_pago,$monto,$descripcion,$tipopago,$idbanco,$idtitular,$total_venta);
          echo $rspta ? "Pago Registrado" : "Pago no se pudo registrar";
        break;

  
      case 'mostrar_venta':
        //$idventa = isset($_GET['id']) ? intval($_GET['id']) : 0;
        $rspta = $venta->mostrar_venta($idventa);
        echo json_encode($rspta);
      break;

      case 'mostrar_acuenta':
        //$idventa = isset($_GET['id']) ? intval($_GET['id']) : 0;
        $rspta = $venta->mostrar_acuenta($idventa);
        echo json_encode($rspta);
      break;
  
      case 'eliminar':
        $rspta=$venta->eliminar($idventa);
         //Codificar el resultado utilizando json
         echo json_encode($rspta);
      break;

      case 'eliminarDetalle':
        $idingreso=$_REQUEST["idingreso"];
        $rspta=$venta->eliminarDetalle($idingreso);
         //Codificar el resultado utilizando json
         echo json_encode($rspta);
      break;

      case 'listar_venta':
        $rspta=$venta->listar_venta();
        //Vamos a declarar un array
        $data=Array();
        while($reg=$rspta->fetch_object())
        {
          $url='../venta/boleta.php?id=';
          if($reg->tipo_pago == '1'){
          $pago ='<button class="btn btn-success btn-xs btn-flat"> Efectivo </button>';
          }else{
            $pago ='<button class="btn btn-danger btn-xs btn-flat"> Deposito </button>';
          }

          if($reg->estado_venta == '1'){
          $es ='<button class="btn btn-danger btn-xs btn-flat"> Pendiente </button>';
          }else{
            $es ='<button class="btn btn-success btn-xs btn-flat"> Pagado </button>';
          }

          $totalito= $reg->total_venta + $reg->total_envio + $reg->total_servicio;

          if($reg->tipoventa == 1 && $reg->estado_venta == 2){
          $tip ='<button class="btn btn-primary btn-xs btn-flat"> Contado </button>';
          $opcion='<a href="create.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                  '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                  ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
          }else if($reg->tipoventa == 2 &&  $reg->estado_venta == 1){
          $tip ='<button class="btn btn-warning btn-xs btn-flat"> Acuenta </button>';
          $opcion='<a href="acuenta.php?idventa=' . $reg->idventa . '" class="btn btn-dark btn-xs btn-flat">Ver Acuenta</i></a>' .
                  ' <a href="create.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                  '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                  ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
          }else if($reg->tipoventa == 2 &&  $reg->estado_venta == 2){
            $tip ='<button class="btn btn-warning btn-xs btn-flat"> Acuenta </button>';
            $opcion='<a href="acuenta.php?idventa=' . $reg->idventa . '" class="btn btn-dark btn-xs btn-flat">Pagado</i></a>' .
                    ' <a href="create.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                    '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                    ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
          }

          $data[]=array(
            "0"=>$reg->created_at,
            "1"=>$reg->usuario,
            "2"=>$reg->cliente,
            "3"=>$reg->nroguia,
            "4"=>$reg->nrocorrelativo,
            "5"=>number_format($totalito,2),
            "6"=>$tip,
            "7"=>$es,          
            "8"=>$opcion
          );
        }
        $results= array(
          "sEcho"=>1, //Informacion para el datatable
          "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
          "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
          "aaData"=>$data);
        echo json_encode($results);
  
      break;


      case 'listar_venta_vendedor':
        $rspta=$venta->listar_venta_vendedor($idusuario);
        //Vamos a declarar un array
        $data=Array();
        while($reg=$rspta->fetch_object())
        {
          $url='../venta/boleta.php?id=';
          if($reg->tipo_pago == '1'){
          $pago ='<button class="btn btn-success btn-xs btn-flat"> Efectivo </button>';
          }else{
            $pago ='<button class="btn btn-danger btn-xs btn-flat"> Deposito </button>';
          }

          if($reg->estado_venta == '1'){
            $es ='<button class="btn btn-danger btn-xs btn-flat"> Pendiente </button>';
          }else{
            $es ='<button class="btn btn-success btn-xs btn-flat"> Pagado </button>';
          }
          
         if($reg->tipoventa == 1 && $reg->estado_venta == 2){
          $tip ='<button class="btn btn-primary btn-xs btn-flat"> Contado </button>';
          $opcion='<a href="create_ver.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                  '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                  ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
          }else if($reg->tipoventa == 2 &&  $reg->estado_venta == 1){
          $tip ='<button class="btn btn-warning btn-xs btn-flat"> Acuenta </button>';
          $opcion='<a href="acuenta.php?idventa=' . $reg->idventa . '" class="btn btn-dark btn-xs btn-flat">Ver Acuenta</i></a>' .
                  ' <a href="create_ver.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                  '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                  ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
          }else if($reg->tipoventa == 2 &&  $reg->estado_venta == 2){
            $tip ='<button class="btn btn-warning btn-xs btn-flat"> Acuenta </button>';
            $opcion='<a href="acuenta.php?idventa=' . $reg->idventa . '" class="btn btn-dark btn-xs btn-flat">Pagado</i></a>' .
                    ' <a href="create_ver.php?idventa=' . $reg->idventa . '" class="btn btn-warning btn-xs btn-flat"><i class="fa fa-edit"></i></a>'.
                    '<a target="_blank" href="'.$url.$reg->idventa.'"> <button class="btn btn-info btn-xs btn-flat"><i class="fa fa-file"></i> </button></a>'.
                    ' <button class="btn btn-danger btn-xs btn-flat" onclick="eliminar(' . $reg->idventa . ')"><i class="fas fa-trash-alt"></i></button>';
            }

          $data[]=array(
            "0"=>$reg->created_at,
            "1"=>$reg->cliente,
            "2"=>$reg->nroguia,
            "3"=>$reg->nrocorrelativo,
            "4"=>number_format($reg->total_venta,2),
            "5"=>$tip,
            "6"=>$es,          
            "7"=>$opcion
          );
        }
        $results= array(
          "sEcho"=>1, //Informacion para el datatable
          "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
          "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
          "aaData"=>$data);
        echo json_encode($results);
  
      break;

      case 'listar_stock':
        $rspta=$venta->listar_stock($idalmacen);
        //Vamos a declarar un array
        $data=Array();
        while($reg=$rspta->fetch_object())
        {
           if($reg->idtipo_prenda =="1"){
             $tal= '<button class="btn btn-primary btn-xs btn-flat">'. $reg->talla .'</button>';
             }else if($reg->idtipo_prenda =="2"){
            $tal= '<button class="btn btn-danger btn-xs btn-flat">'. $reg->talla .'</button>';
            }
       
          $data[]=array(
            "0"=>$reg->producto,
            "1"=>$reg->color1,
            "2"=>$reg->color2,
            "3"=>$tal,
            "4"=>$reg->stock,
            "5" => '<button class="btn btn-success btn-xs btn-flat" onclick="agregarDetalle(' . $reg->idalmacen_central . ', \'' . $reg->idproducto . '\', \'' . $reg->producto . '\' ,\'' . $reg->color1 . '\',\'' . $reg->color2 . '\',\'' . $reg->talla . '\', '.$reg->idtalla.' , '. $reg->idcombinacion_color.', '.$reg->stock.' , '.$reg->precio.'  , this)" data-id="'.$reg->idalmacen_central.'"><span class="fa fa-plus"></span></button>'
          );
        }
        $results= array(
          "sEcho"=>1, //Informacion para el datatable
          "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
          "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
          "aaData"=>$data);
          echo json_encode($results, JSON_PRETTY_PRINT);
  
      break;

      case 'listar_ultimo':
        $rspta=$venta->listar_ultimo();
        echo json_encode($rspta);
      break;

      case 'grafico_venta':
        $rspta=$venta->grafico_venta();
        echo json_encode($rspta);
      break;

      case 'grafico_top':
        $rspta=$venta->grafico_top();
        echo json_encode($rspta);
      break;

        case 'selectbanco': 
          $rspta = $venta->selectbanco();
          if ($rspta) {
              while ($reg = $rspta->fetch_object()) {
                  echo "<option value='" . htmlspecialchars($reg->idbanco, ENT_QUOTES, 'UTF-8') . "'>" . htmlspecialchars($reg->nombre, ENT_QUOTES, 'UTF-8') . "</option>";
              }
          } else {
              echo "<option value=''>No hay banco disponibles</option>";
          }
          break;

          case 'listar_dia':
            $fecha_inicio=$_REQUEST['fecha_inicio'];
            $fecha_fin=$_REQUEST['fecha_fin'];
            $idusuario=$_REQUEST['idusuario'];
            $idtitular=$_REQUEST['idtitular'];

            if (!empty($fecha_inicio) && !empty($fecha_fin) && !empty($idusuario)) {
            $rspta=$venta->listar_fecha_usuario($idusuario,$fecha_inicio,$fecha_fin);
            } else if (!empty($fecha_inicio) && !empty($fecha_fin) && !empty($idtitular)) {
            $rspta=$venta->listar_fecha_titular($idtitular,$fecha_inicio,$fecha_fin);
            }else if (!empty($fecha_inicio) && !empty($fecha_fin)) {
            $rspta=$venta->listar_por_fecha($fecha_inicio,$fecha_fin);
            }
            
            echo json_encode($rspta);      
          break;

          case 'cantidadTotales':
            $fecha_inicio=$_REQUEST['fecha_inicio'];
            $fecha_fin=$_REQUEST['fecha_fin'];
            $idusuario=$_REQUEST['idusuario'];

            if (!empty($fecha_inicio) && !empty($fecha_fin) && !empty($idusuario)) {
            $rspta = $venta->cantidadTotales_Usuario($fecha_inicio, $fecha_fin, $idusuario);
            } else if (!empty($fecha_inicio) && !empty($fecha_fin)) {
                $rspta=$venta->cantidadTotales($fecha_inicio,$fecha_fin);
            }
            echo json_encode($rspta);
          break;

          case 'cantidadTotalesusuario':
            $rspta=$venta->cantidadTotalesusuario($idusuario);
            echo json_encode($rspta);
          break;

          case 'listar_dia_vendedor':
            $rspta=$venta->listar_dia_vendedor($idusuario);
            //Vamos a declarar un array
            $data=Array();
            while($reg=$rspta->fetch_object())
            {
                if($reg->tipo_pago == '1'){
                  $pago ='<button class="btn btn-success btn-xs btn-flat"> Efectivo </button>';
                  }else{
                    $pago ='<button class="btn btn-danger btn-xs btn-flat"> Deposito </button>';
                  }
                if($reg->tipoventa == '1'){
                  $es ='<button class="btn btn-primary btn-xs btn-flat"> Contado </button>';
                  }else{
                    $es ='<button class="btn btn-warning btn-xs btn-flat"> Acuenta </button>';
                  }
           
              $data[]=array(
                "0"=>$reg->fecha_pago,
                "1"=>$reg->usuario,
                "2"=>$reg->cliente,
                "3"=>$reg->nroguia,
                "4"=>number_format($reg->monto_pagado,2),
                "5"=>$pago,
                "6"=>!empty($reg->banco) ? $reg->banco : '-',
                "7"=>!empty($reg->titular) ? $reg->titular : '-',
                "8"=>$es  
              );
            }
            $results= array(
              "sEcho"=>1, //Informacion para el datatable
              "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
              "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
              "aaData"=>$data);
              echo json_encode($results, JSON_PRETTY_PRINT);
      
          break;

          case 'selectTallas': 
            $idcombinacion_color=$_REQUEST["idcombinacion_color"];
            $idproducto=$_REQUEST["idproducto"];
            $tipo_salida=$_REQUEST["tipo_salida"];
            $rspta = $venta->selectTallas($idcombinacion_color,$idproducto,$tipo_salida,$idalmacen);
            if ($rspta) {
                while ($reg = $rspta->fetch_object()) {
                  echo "<option value='" . htmlspecialchars($reg->idtalla, ENT_QUOTES, 'UTF-8') . "' 
                  data-cantidad='" . htmlspecialchars($reg->cantidad, ENT_QUOTES, 'UTF-8') . "' 
                  data-idalmacen_central='" . htmlspecialchars($reg->idalmacen_central, ENT_QUOTES, 'UTF-8') . "'>
                  " . htmlspecialchars($reg->nombre, ENT_QUOTES, 'UTF-8') . "
                </option>";
                }
            } else {
                echo "<option value=''>No hay color disponibles</option>";
            }
            break;
            
             case 'selectTitular':
              $rspta = $venta->selectTitular();
              if ($rspta) {
                while ($reg = $rspta->fetch_object()) {
                    //echo "<option value='" . htmlspecialchars($reg->idpersona, ENT_QUOTES, 'UTF-8') . "'>" . htmlspecialchars($reg->nombre, ENT_QUOTES, 'UTF-8') . "</option>";
                    echo "<option value='" . htmlspecialchars($reg->idtitular, ENT_QUOTES, 'UTF-8') . "'>" . htmlspecialchars($reg->nombre, ENT_QUOTES, 'UTF-8') . " </option>";
                }
            } else {
                echo "<option value=''>No hay titular disponibles</option>";
            }
            break;  

      case 'listar_manual':
        $rspta=$venta->listar_manual();
        //Vamos a declarar un array
        $data=Array();
        while($reg=$rspta->fetch_object())
        {
           if($reg->idtipo_prenda =="1"){
             $tal= '<button class="btn btn-primary btn-xs btn-flat">'. $reg->talla .'</button>';
             }else if($reg->idtipo_prenda =="2"){
            $tal= '<button class="btn btn-danger btn-xs btn-flat">'. $reg->talla .'</button>';
            }
       
          $data[]=array(
            "0"=>$reg->producto,
            "1"=>$reg->color1,
            "2"=>$reg->color2,
            "3"=>$reg->color2,
            "4"=>$tal,
            "5" => '<button class="btn btn-success btn-xs btn-flat" onclick="agregarDetalle(' . $reg->idalmacen_central . ', \'' . $reg->idproducto . '\', \'' . $reg->producto . '\' ,\'' . $reg->color1 . '\',\'' . $reg->color2 . '\',\'' . $reg->talla . '\', '.$reg->idtalla.' , '. $reg->idcombinacion_color.',  '.$reg->precio.'  , this)" data-id="'.$reg->idalmacen_central.'"><span class="fa fa-plus"></span></button>'
          );
        }
        $results= array(
          "sEcho"=>1, //Informacion para el datatable
          "iTotalRecords"=>count($data),//Enviamos el total de registtros en el datatable
          "iTotalDisplayRecords"=>count($data),//enviamos el total de registros a visualizar
          "aaData"=>$data);
          echo json_encode($results, JSON_PRETTY_PRINT);
  
      break;

    
}