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

$id_empresa = $_SESSION["id_empresa"];
$id_ejerciciox = $_SESSION["ID_Ejercicio"];

$mode = isset($_POST['mode']) ? $_POST["mode"]  : "";
$id = isset($_POST['id']) ? $_POST["id"]  : "";

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


if( $mode == "append_asiento" ) {
   $desc = isset($_POST['desc']) ? $_POST["desc"]  : "";
}
if( $mode == "edit_asiento" ) {
   $desc = isset($_POST['desc']) ? $_POST["desc"]  : "";
   $fechaAsiento = isset($_POST['fecha']) ? $_POST["fecha"]  : "";
   $idAsiento = isset($_POST['idAsiento']) ? $_POST["idAsiento"]  : "";
}
else {
   if( $mode != "delete_mov" && $mode != "delete_asiento" ) {
      $fecha = isset($_POST['fecha']) ? $_POST["fecha"] : "";
      $fechaAsiento = isset($_POST['fechaAsiento']) ? $_POST["fechaAsiento"] : "";
      $cuenta = isset($_POST['cuenta']) ? $_POST["cuenta"]  : "";
      $movimiento = isset($_POST['movimiento']) ? $_POST["movimiento"]  : "";
      $debe = isset($_POST['debe']) ? $_POST["debe"]  : "";
      $haber = isset($_POST['haber']) ? $_POST["haber"]  : "";
      $lafecha = substr( $fecha, 6, 4 ) . '-' . substr( $fecha, 3, 2 ) . '-' . substr( $fecha, 0, 2 );
   }
}

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


   switch( $mode ) {
      case "edit_asiento":

         $sql = sprintf( "update asientos set fecha='%s', concepto='%s' where id='%s'", $fechaAsiento, $desc, $idAsiento );
//         echo $sql . "<br/>";
         $result = $conn->query($sql);
         mysqli_free_result( $result ); 
         echo "{\"status\":\"Ok\", \"nro\": \"" . $asiento . "\" }";
         break;

      case "append_asiento":

         $sql = sprintf( "select sql_no_cache asiento from asientos where borrado=0 and ejercicio='%s' order by asiento desc limit 1", $id_ejercicio );
         $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`,`cliente`,`Ejercicio`,`Tipo_Asiento`) VALUES(0,'%s','%s','%s','%s',1,'%s','%s')", $lafecha, $asiento , $desc, $id_empresa, $id_ejercicio, $tipo_asiento );
//         echo "Asiento_Tipo: " . $tipo_asiento;
//         echo $sql;
         $result = $conn->query($sql);
         mysqli_free_result( $result ); 
         echo "{\"status\":\"Ok\", \"nro\": \"" . $asiento . "\" }";
         break;

      case "update_mov":
         $sql = sprintf( "update movimientos set cuenta='%s', debe='%s', haber='%s', fecha='%s', id_asiento='%s' where id = '%s'", $cuenta, $debe, $haber, $fechaAsiento, $idAsiento, $id ); 
//         echo $sql . "<br/>";

         $result = $conn->query($sql);
         mysqli_free_result( $result );
//       Update_Asiento($conn, $numero);
         Update_Asiento_Por_ID($conn, $idAsiento, $id_ejercicio );
         echo "{\"status\":\"Ok\" }";
         break;

      case "append_mov":

         // --- Obtener nro. Movimiento --- //
         $sql = sprintf( "select movimiento from movimientos where asiento='%s' order by movimiento desc limit 1", $numero );
         $result = $conn->query($sql);
         $movimiento = 1;
         if ($result->num_rows > 0) {
            if( $row = $result->fetch_assoc() ) {
               $movimiento = $row["movimiento"] + 1;
            }
         }
         mysqli_free_result( $result ); 

         $lafecha = date('Y/m/d');
         $sql = 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')", 
                          $fechaAsiento, $numero, $movimiento, $cuenta, $debe, $haber, $id_empresa, 1, 0, '', $idAsiento, $id_ejercicio );
  //       echo $sql . "<br/>";
         $result = $conn->query($sql);
         mysqli_free_result( $result );    

//         Update_Asiento($conn, $numero);
         Update_Asiento_Por_ID($conn, $idAsiento, $id_ejercicio );
         echo "{\"status\":\"Ok\" }";
         break;

      case "delete_mov":
         $sql = sprintf( "delete from movimientos where id='%s'", $id );
         $result = $conn->query($sql);
         mysqli_free_result( $result );    

         // Calcular nuevos valores de Debe y Haber del Asiento
         Update_Asiento($conn, $numero);
         echo "{\"status\":\"Ok\" }";
         break;

      case "delete_asiento":
      /*
         // --- Obtener nro. Asiento --- //
         $sql = sprintf( "select Asiento from asientos where Id='%s'", $id );
         $result = $conn->query($sql);
         if ($result->num_rows > 0) {
            if( $row = $result->fetch_assoc() ) {
               $numero = $row["Asiento"];
            }
         }
         mysqli_free_result( $result ); 
         */

         $sql = sprintf( "delete from asientos where Id='%s'", $id );
         $result = $conn->query($sql);
         mysqli_free_result( $result );    

         $sql = sprintf( "delete from movimientos where ID_Asiento='%s'", $id );
         $result = $conn->query($sql);
         mysqli_free_result( $result );    
         echo "{\"status\":\"Ok\" }";
//         echo "{\"status\":\"Ok\",\"numero\":\"" . $numero . "\", \"sql\":\"" . $sql1 . "\" }";
         break;
         
      default:
         echo "{\"status\":\"Ok\" }";
         break;

   } 
   mysqli_close($conn);


   function Update_Asiento($conn, $numero) {

      // --- Calcular Deb y Haber --- //
      $sql = sprintf( "select sql_no_cache sum(debe) as d, sum(haber) as h from movimientos where asiento='%s' and movimientos.borrado=0 and movimientos.ejercicio='%s' order by movimiento", $numero, $id_ejercicio );
      $result = $conn->query($sql);
      $debe = $haber = 0;
      if ($result->num_rows > 0) {
         if( $row = $result->fetch_assoc() ) {
            $debe = $row["d"];
            $haber = $row["h"];
         }
      }
      mysqli_free_result( $result ); 
   
      if( $debe == $haber ) $status = 3;
      else $status = 2;
      $sql = sprintf( "update asientos set debe='%s', haber='%s', estado='%s' where asiento='%s' and ejercicio='%s' ", $debe, $haber, $status, $numero, $id_ejercicio );
      $result = $conn->query($sql);
      mysqli_free_result( $result ); 
   }

   function Update_Asiento_Por_ID($conn, $id, $id_ejercicio) {

      // --- Calcular Deb y Haber --- //
      $sql = sprintf( "select sql_no_cache sum(debe) as d, sum(haber) as h from movimientos where ID_Asiento='%s' and movimientos.borrado=0 and movimientos.ejercicio='%s' order by movimiento", $id, $id_ejercicio );
      $result = $conn->query($sql);
      $debe = $haber = 0;
      if ($result->num_rows > 0) {
         if( $row = $result->fetch_assoc() ) {
            $debe = $row["d"];
            $haber = $row["h"];
         }
      }
      mysqli_free_result( $result ); 
   
      if( $debe == $haber ) $status = 3;
      else $status = 2;
      $sql = sprintf( "update asientos set debe='%s', haber='%s', estado='%s' where id='%s' and ejercicio='%s' ", $debe, $haber, $status, $id, $id_ejercicio );
//      echo "{\"status\":\"". $sql . "\" }";
      $result = $conn->query($sql);
      mysqli_free_result( $result ); 
   }

?>


