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

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

$target_dir = "bases/";
$target_name = basename($_FILES["fileToUpload"]["name"]);
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
//$target_file = $target_dir . "Internet_Mora_18-12-2019.txt";

$name = isset($_POST['dbName']) ? $_POST["dbName"]  : "";
$type = isset($_POST['type']) ? $_POST["type"]  : "";

$uploadOk = true;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$error = 0;
$errtxt = "Ok";
$cantidad = 0;
$transaction = false;

   // Check if file already exists and delete if possible
   if (file_exists($target_file)) {
      if( unlink( $target_file ) == false ) {
         $errtxt = "Sorry, file already exists.";
         $error = 3;
         $uploadOk = false;
      }      
   }

   // Allow certain file formats
   if($imageFileType != "csv" && $imageFileType != "txt" ) {
      $errtxt = "Sorry, only CSV files are allowed.";
      $error = 4;
      $uploadOk = false;
   }

   // Check if $uploadOk is set to 0 by an error
   if ($uploadOk == false) {

   } 
   else {
      

      if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
         $errtxt = "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";

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

         $data = file($target_file, FILE_SKIP_EMPTY_LINES);
         $count = 0;
         foreach( $data as $row ) {
            $count++;


            if( $type == 1 || $type == 2 ) {
               if( $count == 1 ) continue;
               $fields = explode(';', $row);
               $fecha = $fields[0];
               $tc = $fields[1];
               $sucursal = $fields[2];
               $numero = $fields[3];
               if( $type == 2 ) {
                  $tipo_doc = $fields[4];
                  $doc = $fields[5];
                  $nombre = $fields[6];
                  $total = $fields[7];
                  $moneda = $fields[8];
                  $tipo_cambio = $fields[9];
                  $no_gravado = $fields[10];
                  $exento = $fields[11];
                  $credito_fiscal = $fields[12];
                  $otros = $fields[13];
                  $iibb = $fields[14];
                  $a_cuenta_iva = $fields[15];
                  $impuestos_internos = $fields[16];
                  $otros_tributos = $fields[17];
                  $neto_iva_0 = $fields[18];
                  $importe_iva_0 = $fields[19];
                  $neto_iva_25 = $fields[20];
                  $importe_iva_25 = $fields[21];
                  $neto_iva_5 = $fields[22];
                  $importe_iva_5 = $fields[23];
                  $neto_iva_105 = $fields[24];
                  $importe_iva_105= $fields[25];
                  $neto_iva_21 = $fields[26];
                  $importe_iva_21= $fields[27];
                  $neto_iva_27 = $fields[28];
                  $importe_iva_27= $fields[29];

                  $neto_gravado = $fields[30];
                  $total_iva = $fields[31];
               }
   
   
               if( $type == 1 ) {
                  $tipo_doc = $fields[5];
                  $doc = $fields[6];
                  $nombre = $fields[7];
                  $total = $fields[9];
                  $moneda = $fields[10];
                  $tipo_cambio = $fields[11];
   
   
                  $no_gravado = $fields[12];
                  $exento = $fields[13];
                  $otros = $fields[14];
                  $iibb = $fields[15];
   
                  $a_cuenta_iva = $fields[16];
                  $municipales = $fields[17];
                  $no_categorizados = $fields[18];
                  $impuestos_internos = $fields[19];
                  $otros_tributos = $fields[20];

                  $neto_iva_0 = $fields[19];
                  $importe_iva_0 = $fields[20];
                  $neto_iva_25 = $fields[21];
                  $importe_iva_25 = $fields[22];
                  $neto_iva_5 = $fields[23];
                  $importe_iva_5 = $fields[24];
                  $neto_iva_105 = $fields[25];
                  $importe_iva_105= $fields[26];
                  $neto_iva_21 = $fields[27];
                  $importe_iva_21= $fields[28];
                  $neto_iva_27 = $fields[29];
                  $importe_iva_27= $fields[30];

                  $neto_gravado = $fields[31];
                  $total_iva = $fields[32];
   
                  $credito_fiscal = $fields[12];
   
               }
   
   
               /*
   
   21230-62674717-127/09/2021               2021030274       431001.81
   
   "Fecha de Emisión";"Tipo de Comprobante";"Punto de Venta";"Número de Comprobante";"Número de Comprobante Hasta";"Tipo Doc. Comprador";"Nro. Doc. Comprador";"Denominación Comprador";"Fecha de Vencimiento del Pago";
   "Importe Total";"Moneda Original";"Tipo de Cambio";"Importe No Gravado";"Importe Exento";"Importe de Per. o Pagos a Cta. de Otros Imp. Nac.";"Importe de Percepciones de Ingresos Brutos";"Importe de Impuestos Municipales";
   "Percepción a No Categorizados";"Importe de Impuestos Internos";"Importe Otros Tributos";"Neto Gravado IVA 0%";"Neto Gravado IVA 2,5%";"Importe IVA 2,5%";"Neto Gravado IVA 5%";"Importe IVA 5%";"Neto Gravado IVA 10,5%";"Importe IVA 10,5%";"Neto Gravado IVA 21%";"Importe IVA 21%";"Neto Gravado IVA 27%";"Importe IVA 27%";"Total Neto Gravado";"Total IVA" 
                 */
   
   
               $nombre = str_replace("\"", "", $nombre );
               $total = floatval( str_replace(",", ".", $total ) );
               $no_gravado = floatval( str_replace(",", ".", $no_gravado ) );
               $exento = floatval( str_replace(",", ".", $exento ) );
               $credito_fiscal = floatval( str_replace(",", ".", $credito_fiscal ) );
               $otros = floatval( str_replace(",", ".", $otros ) );                          // IVA? Ganancias?
               $iibb = floatval( str_replace(",", ".", $iibb ) );                            // IIBB?  Telefonica = IIBB + RET IVA
               $municipales = floatval( str_replace(",", ".", $municipales) );                            // IIBB?
               $a_cuenta_iva = floatval( str_replace(",", ".", $a_cuenta_iva ) );                // No
               $impuestos_internos = floatval( str_replace(",", ".", $impuestos_internos ) );
               $otros_tributos = floatval( str_replace(",", ".", $otros_tributos ) );
               $neto_iva_105 = floatval( str_replace(",", ".", $neto_iva_105 ) );
               $importe_iva_105 = floatval( str_replace(",", ".", $importe_iva_105 ) );
               $neto_iva_21 = floatval( str_replace(",", ".", $neto_iva_21 ) );
               $importe_iva_21 = floatval( str_replace(",", ".", $importe_iva_21 ) );
               $neto_iva_27 = floatval( str_replace(",", ".", $neto_iva_27 ) );
               $importe_iva_27 = floatval( str_replace(",", ".", $importe_iva_27 ) );
   
               $neto_gravado = floatval( str_replace(",", ".", $neto_gravado ) );
               $total_iva = floatval( str_replace(",", ".", $total_iva ) );
   
   
//               printf( "Fecha: %s\nComprobante: %04d-%08d\nCUIT: %s - %s\nIVA 10.5%%: %10.2lf\nIVA 21%%: %10.2lf\nIVA 27%%: %10.2lf\nTotal: %10.2lf\nImporte IVA: %10.2lf\nIIBB:%12.lf\nA_Cuenta_IVA:%12.lf\nImp Nacionales:%12.lf\nInternos:%12.lf\nOtros Tributos:%12.lf\n\n",  $fecha, intval( $sucursal ), intval( $numero ), $doc, $nombre, floatval( $neto_iva_105 ), floatval( $neto_iva_21 ), floatval( $neto_iva_27 ), floatval( $neto_gravado ), floatval( $total_iva ), $iibb, $a_cuenta_iva, $otros, $internos, $otros_tributos );
               $txt = sprintf( "Fecha: %s\nCUIT: %s - %s\nIIBB:%12.lf\nTotal_IVA:%12.lf\nNeto Gravado:%12.lf\n\n", $fecha, $doc, $nombre, $iibb, $total_iva, $neto_gravado );
         
//               writeToLog( "/var/www/html/impuestos/impuestos.txt", $txt, 0 );
//               writeToLog( "/var/www/html/impuestos/impuestos.txt", "", 1 );
   
               $op = $type;
               $number = sprintf( "%04d-%08d", intval( $sucursal ), intval( $numero ) );
               $sql = sprintf( "delete from comprobantes where operacion='%d' and numero='%s' and fecha='%s'", $type, $number, $fecha );
               $result = $conn->query($sql);
               if( $result && is_resource( $result ) ) mysqli_free_result( $result );    
   
   
               $sql = sprintf( "insert into comprobantes(`Id`,`operacion`,`fecha`,`numero`,`iva_105`,`iva_21`,`iva_27`,`iva_MT`,`iva`,`importe`,`retenciones`,`retenciones_iva`,`op_exentas`,`nombre`,`cliente`,`retenciones_ganancias`,`etiquetas`,`cuit`) VALUES(0,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')", 
                                $op, $fecha, $number, $neto_iva_105, $neto_iva_21, $neto_iva_27, $no_gravado, $total_iva, $total, $iibb, $a_cuenta_iva, $otros_tributos, $nombre, "0", $otros, "", $doc );
//                  writeToLog( "/var/www/html/impuestos/impuestos.txt", $sql, 0 );

               $result = $conn->query($sql);
               if( $result && is_resource( $result ) ) mysqli_free_result( $result );    
   
            }
            else {

            // Retenciones
               if( $type == 5 ) {

                  $data = $row;

//                  var_dump( $data );
//                  printf( "\n\n\n" );
                  if( $count == 1 ) continue;

                  $cuit = substr( $data, 0, 11 );                    // CUIT
                  $nombre = substr( $data, 23, 63 );
                  $retencion = intval( substr( $data, 88, 8 ) ); 
                  $descripcion_impuesto = substr( $data, 93, 30 ); 
                  $regimen = intval( substr( $data, 154, 7 ) ); 
                  $descripcion_regimen = substr( $data, 162, 60 ); 
                  $fecha = substr( $data, 228, 10 ); 
                  $certificado = substr( $data, 239, 16 ); 

                  $operacion = "";
                  $comprobante = "";
                  $descripcion_comprobante = "";

                  $valor = substr( $data, 275, 16 );
                  $text =  str_replace(".", "", $valor ); 
                  $text =  str_replace(",", ".", $text ); 
                  $importe = floatval( $text ); 

                  $desc = substr( $data, 322, 30 ); 
                  $fecha_sql = substr( $fecha, 6, 4 ) . "/" . substr( $fecha, 3, 2 ) . "/" . substr($fecha,0,2 );


                  printf( "FECHA: %s\nCUIT: %s %s\nRETENCION: %3d\nREGIMEN: %3d\nCERTIFICADO: %s\nIMPORTE: %12.2lf\nDESCRIPCION: %s\n\n",  $fecha, $cuit, $nombre, $retencion, $regimen, $certificado, $importe, $desc );


                  if( intval( $cuit ) == 0 ) continue;


                  $sql = sprintf( "insert into retenciones(`id`,`cuit`,`denominacion`,`impuesto`,`descripcion_impuesto`,`regimen`,`descripcion_regimen`,`fecha_retencion`,`certificado`,`operacion`,`importe`,`comprobante`,`descripcion_comprobante`) VALUES(0,'%s','%s','%s','%s','%s','%s','%s','%s','%s','%14.2lf','%s','%s')",  
                                   $cuit, $nombre, $retencion, $descripcion_impuesto, $regimen, $descripcion_regimen, $fecha_sql, intval($certificado), $operacion, $importe, $comprobante, $descripcion_comprobante );

                  printf( "%s\n", $sql );                                          
                  writeToLog( "/var/www/html/impuestos/impuestos.txt", $sql, 0 );

                  $result = $conn->query($sql);
                  if( $result && is_resource( $result ) ) mysqli_free_result( $result );    

//                  printf( "Fecha: %s\nCERTIFICADO: %08d\n\n",  $fecha, intval( $certificado ) );

//                  printf( "Fecha: %s\nCERTIFICADO: %08d\nCUIT: %s %s\nRETENCION: %3d\nREGIMEN: %3d\nDESC: %s\nIMPORTE: %12.2lf\nTotal: %10.2lf\nImporte IVA: %10.2lf\n\n",  $fecha, intval( $certificado ), $cuit, $nombre, $retencion, $regimen, $desc, $importe );



                  /*

                  $op = 5;
                  $retencion = substr( $data, 0, 3 );                // Codigo retencio
                  $cuit = substr( $data, 3, 13 );                    // CUIT
                  $fecha = substr( $data, 16, 10 );               
                  $parte1= substr( $data, 26, 7 );                   // Numero Parte 1  
                  $parte2= substr( $data, 41, 8 );                   // Numero Parte 1  
                  $importe= floatval( substr( $data, 51, 16 ) );     // Importe  

                  printf( "Retencion: %d\nCUIT: %s\nFecha: %s\nComprobante: %s\nImporte: %s\n", $retencion, $cuit, $fecha, $parte2, $importe );
                  $fecha = substr( $fecha, 6, 4 ) . "/" . substr( $fecha, 3, 2 ) .  "/" . substr( $fecha, 0, 2 );
                  $cuit = str_replace("-", "", $cuit );

                  $number = sprintf( "%s", $parte2 );
                  $sql = sprintf( "delete from comprobantes where operacion='%d' and numero='%s' and fecha='%s'", $type, $parte2, $fecha );
                  $result = $conn->query($sql);
                  if( $result && is_resource( $result ) ) mysqli_free_result( $result );    

                  if( intval( $retencion ) == 767 ) $op = 5;
                  if( intval( $retencion ) == 217 ) $op = 4;


                  $sql = sprintf( "insert into comprobantes(`Id`,`operacion`,`fecha`,`numero`,`cuit`,`Retenciones_IVA`,`importe`) VALUES(0,'%s','%s','%s','%s','%s','%s')", 
                                   $op, $fecha, $parte2, $cuit, $importe, $importe );

                  printf( "%s\n", $sql );                                          
                  $result = $conn->query($sql);
                  if( $result && is_resource( $result ) ) mysqli_free_result( $result );    
                  */

               }
            }
         }

         
         if( $transaction == true && $error != 0 ) {
            $conn->query("rollback"); 
         }
         else {
            $conn->query("commit");
         }
      } 
      else {
         $errtxt = "Sorry, there was an error uploading your file.";
         $error = 5;
      }
   }
   mysqli_close($conn);
   echo "{\"error\":\"" . $error . "\", \"errortext\":\"" . $errtxt . "\", \"query\":\"" . $query . "\" }";

   function writeToLog( $filename, $text, $mode ) {

     if( $myfile = fopen( $filename, "a+") ) {

         if( $mode == 1 ) $text = "+------------------------------------------------------------------+";
         date_default_timezone_set("America/Buenos_Aires");
         $hoy = date("Y-m-d H:i:s", time() ); 
         fprintf( $myfile, "%s: %s\n", $hoy, $text );
//         printf( "%s\n", $text );
         fclose( $myfile );
     }
   }


/*
fecha 
tc		1 = FC
sucursal	
numero
tipo doc	80 = CUIT
cuit
nombre
importe total
moneda		PES = Pesos
tipo de cambio	
no gravado
exento
credito fiscal
pasos a otros impuestos
iibb
impuestos municipales
a cuenta de iva
impuestos internos
otros tributos
iva 0
neto gravado iva 2.5
importe iva 2.5
neto gravado iva 5
importe iva 5
neto gravado iva 10.5
importe iva 10.5
neto gravado iva 21
importe iva 21
neto gravado iva 27
importe iva 27
neto gravado
total iva
*/

?>



