<?php
session_start();
if( $_SESSION["user"] == "" || $_SESSION["passwd"] == "" ) {
//   header("Location: index.php");
}

include_once('db_config.php');
ini_set('max_execution_time', 120);

$id_empresa = $_SESSION["id_empresa"];
$id_ejercicio = $_SESSION["ID_Ejercicio"];
$numero = isset($_POST['numero']) ? $_POST["numero"]  : "";
$idAsiento = isset($_POST['idAsiento']) ? $_POST["idAsiento"]  : "";

//   echo ">>> " . $idAsiento . "<br/>";
//$idAsiento = 17;
//$numero = 14;

   $status = "{\"status\":\"Error\", \"id\": \"" . $idAsiento . "\" }";

   $error = false;
   $conn->query("set autocommit=0;");
   $conn->query("start transaction;");

   $sql = sprintf( "select sql_no_cache * from asientos where borrado=0 and Id = '%s';", $idAsiento );
   $result = $conn->query($sql);
   if ($result->num_rows > 0) {
      if( $row = $result->fetch_assoc() ) {

         $idA = $row["Id"];
         $fecha = $row["Fecha"];
         $concepto = $row["Concepto"] . " " . "(Copia)";
         $cliente = $row["Cliente"];
         $real = $row["Real"];
         $empresa = $row["Empresa"];
         $relacion = $row["relacion"];
         $ejercicio = $row["Ejercicio"];
         $tipo = $row["Tipo_Asiento"];
         $debe = $row["Debe"];
         $haber = $row["Haber"];
         $ordenado = $row["Asiento_Ordenado"];
         $estado = $row["Estado"];

         mysqli_free_result( $result ); 

         $sql = sprintf( "select sql_no_cache asiento from asientos where borrado=0 order by asiento desc limit 1;" );
         $result = $conn->query($sql);
         $asiento = 1;
         if ($result->num_rows > 0) {
            if( $row = $result->fetch_assoc() ) {
               $asiento = $row["asiento"] + 1;
               mysqli_free_result( $result ); 

               $sql = sprintf( "insert into asientos(`Id`,`fecha`,`asiento`,`concepto`,`empresa`,`Ejercicio`,`Tipo_Asiento`,`Cliente`,`Debe`,`Haber`,`Asiento_Ordenado`,`Estado`) VALUES(0,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');", $fecha, $asiento , $concepto, $empresa, $ejercicio, $tipo, $cliente,$debe,$haber,$ordenado,$estado );
               $result = $conn->query($sql);
               if( $result == false ) {
                  $error = true;
               }
            }
         }
         if( $result ) mysqli_free_result( $result );    

         $sql = sprintf( "select last_insert_id() as last;" );
         $result = $conn->query($sql);
         $lastID = 0;
         $movimiento = 1;
         if ($result->num_rows > 0) {
            if( $row = $result->fetch_assoc() ) {
               $lastID = $row["last"];             // ID del Asiento
            }

         }
         else {
            $error = true;
            echo mysql_errno($conn) . ": " . mysql_error($conn) . "<br/>";
         }

         if( $result ) mysqli_free_result( $result );    

         // Copio Movimientos
         // --- Obtener nro. Movimiento --- //
         $sql = sprintf( "select sql_no_cache * from movimientos where borrado=0 and ID_Asiento = '%s';", $idA );
         $result = $conn->query($sql);
         $movimiento = 1;
         if ($result->num_rows > 0) {
            while( $row = $result->fetch_assoc() ) {

               $cuenta = $row["Cuenta"];
               $debe = $row["Debe"];
               $haber = $row["Haber"];
               $cliente = $row["Cliente"];
               $id_empresa = $row["Empresa"];
               $ejercicio = $row["Ejercicio"];
               $sql1 = sprintf( "insert into movimientos(`Id`,`fecha`,`asiento`,`movimiento`,`cuenta`,`Debe`,`Haber`,`cliente`,`empresa`,`borrado`,`observaciones`,`ID_Asiento`,`Ejercicio`) VALUES(0,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');", 
                                $fecha, $asiento, $movimiento, $cuenta, $debe, $haber, $cliente, $id_empresa, 0, '', $lastID,$ejercicio );
               $result1 = $conn->query($sql1);
               if( $result1 ) mysqli_free_result( $result1 );    
               else {
                  $error = true;
                  break;
               }
               $movimiento = $movimiento + 1;
            }
            mysqli_free_result( $result ); 
         }
         $status =  "{\"status\":\"Ok\", \"nro\": \"" . $asiento . "\" }";
      }
   }
   if( $error == true ) {
        $conn->query("rollback"); 
        echo "ROLLBACK";
   }
   else $conn->query("commit");
   mysqli_close($conn);
   echo $status;
?>

