<?php
declare(strict_types=0);
// ini_set('memory_limit', '8192M');
// session_start();
// echo '<meta http-equiv="refresh" content="5">';
foreach($_GET  as $key => $value){${$key}=trim($value);$_PARAMS[$key]=${$key};}  
foreach($_POST as $key => $value){${$key}=trim($value);$_PARAMS[$key]=${$key};}
include_once('lib_main.php');


// include('simplexlsx.class.php');

// include_once('../PhpOffice/PhpSpreadsheet/Spreadsheet.php');

$ztabla='fdoc';
$zwhere='(fdoc_idate>="'.date('Y-m-d',strtotime(' -1 day')).'")';
$zorder='(fdoc_descri)';
include('ele_datalist.php');




// SELECT distinct
//     SUBSTRING(concepto, POSITION('bl#' IN concepto)+3,100)AS bldn,
//     SUBSTRING(concepto, POSITION('cntdr' IN concepto)+6,100)AS cntn,
//     SUBSTRING(concepto,POSITION('buque' IN concepto)+6,100)AS buque,
//     SUBSTRING(concepto,POSITION('naviera' IN concepto)+8,100)AS naviera
// FROM cont1




$zobj=2;
$zid='ldc1';
$zlabel='Archivo';
$ztype='file';
$zlabel2='';
$zmulti=1;
// $zaccept='.csv';
// $zaccept='.xls,.csv';
$zaccept='.xls';

// $zlabel2='Archivo';
$zonclick2='{document.getElementById("file").value="";load_ldc2("'.$zid.'");};';
include('ele_input.php');


$sql_fdoc='select * from fdoc0 where fdoc_docu="CONT" order by fdoc_codigo desc limit 1';
$res_fdoc=msql_query($sql_fdoc,$link_data);

$zid='file';
$zvalue='';
$zlabel='Procesar';
$ztabla='fdoc';
$zonclick2='{window.location.href="?scri=load_ldc1&file="+document.getElementById("file").value;}';
include('ele_input.php');




$ztabla='ctas';
$zwhere='(ctas_codigo in(select ctas_1 from cont2 where ctas_1!=ctas_2))';
include('ele_datalist.php');


     
$zid='ctas';
$zlabel='Cuenta';
$ztabla='ctas';
$ztodo=1;
include('ele_input.php');




$zid='btn_updt';
$zlabel='Modificar';
$zonclick='{window.location.href="?scri=load_ldc1&dato=2&ctas="+document.getElementById("ctas").value;}';
include('ele_button.php');


$zid='btn_orig';
$zlabel='Original';
$zonclick='{window.location.href="?scri=load_ldc1&dato=1";}';
include('ele_button.php');




$sql_dtr1='update cont1 set docu="ASI1" where docu like "DTR1" and concepto like "Asiento de cierre auto%"';
$res_dtr1=msql_query($sql_dtr1,$link_data);


if($dato==1)
{
     $sql_dato='update cont2 set ctas=ctas_1';
     $res_dato=msql_query($sql_dato,$link_data);
     echo '<br>=== DATOS ORIGINALES';
}


if($dato==2)
{
//      $sql_dato='update cont2 set ctas=ctas_2';
     
     if(empty($ctas))
     {echo '<br>=== SELECCIONE CUENTA A MODIFICAR == ' ;}
          
     if(!empty($ctas))
     {
          $sql_dato='update cont2 set ctas=ctas_2 where ctas_1 = "'.$ctas.'" ';
          $res_dato=msql_query($sql_dato,$link_data);
          echo '<br>=== DATOS MODIFICADOS == '.$ctas ;
     }
     
}


$sql_csub='update cont2 set csub="GENE-GENE" where ctas_1=ctas_2 ';
$res_csub=msql_query($sql_csub,$link_data);

$sql_csub='update cont2 set csub="GENE-MODI" where ctas_1!=ctas_2 ';
$res_csub=msql_query($sql_csub,$link_data);




$sql_ctas12='select distinct ctas_1,ctas_2 from cont2 where ctas_1!=ctas_2 order by ctas_1';
$res_ctas12=msql_query($sql_ctas12,$link_data);

     echo '<br>';
     echo '<br>';


$dom = new DOMDocument();
     $dom->encoding = 'utf-8';
     $dom->xmlVersion = '1.0';
     $dom->formatOutput = true;
$table=$dom->appendChild($dom->createElement("table"," "));
while($aso_ctas12=msql_fetch_assoc($res_ctas12))
{
     $tr=$table->appendChild($dom->createElement("tr"," "));
     $td=$tr->appendChild($dom->createElement("td",$aso_ctas12['ctas_1']));
     $td=$tr->appendChild($dom->createElement("td","==>"));
     $td=$tr->appendChild($dom->createElement("td",$aso_ctas12['ctas_2']));
}
echo $dom->saveXML();

     echo '<br>';
     echo '<br>';



if(!empty($file))
{
     $fdoc0=data_maes('fdoc',$file);
     $xlsfile='../'.$cfg_empr.'/fdoc/'.$fdoc0['fdoc_file'];
     
     $fecha1='';
     $fecha2='';
     
     ini_set('memory_limit', '8192M');

     require_once 'PHPExcel/Classes/PHPExcel/IOFactory.php';
     error_reporting(E_ALL);

     $inputFilename=$xlsfile;

//      $outputFilename = $inputFilename . ".output.txt";

     echo '<br>';
     echo '<br>';
     echo "input  = [${inputFilename}]\n";
     echo '<br>';
     echo "input  = ".$fdoc0['fdoc_descri'];
//      echo "output = [${outputFilename}]\n";

     $fo = fopen($outputFilename, "w");
     // fwrite($fo, "inputFilename  = [${inputFilename}]\n");
     // fwrite($fo, "outputFilename = [${outputFilename}]\n");

     $excelFilename = $inputFilename;
     $excelType     = PHPExcel_IOFactory::identify($inputFilename);
     $excelReader   = PHPExcel_IOFactory::createReader($excelType);
     $excelReader->setReadDataOnly(true);
     $excel         = $excelReader->load($inputFilename);

     $sheetNames = $excel->getSheetNames();
     
// Consulta Cuentas
// LibroDiario
     
     $ctas_libro=0;
     $ctas_mayor=0;
     $ctas_cambio=0;
     
     if(mb_stristr($sheetNames[0],'LibroDiario')){$ctas_libro=1;}
     if(mb_stristr($sheetNames[0],'Consulta')){$ctas_mayor=1;}
     if(mb_stristr($sheetNames[0],'Cambio')){$ctas_cambio=1;}
     
     if($ctas_libro==1)
     {
     
          foreach($sheetNames as $sheetName) 
          {
              $sheet = $excel->getSheetByName($sheetName);
          //     $nRow = $sheet->getHighestRow();
              $nRow = 65500;
              $sCol = $sheet->getHighestColumn(); // column name as string
              $nCol = PHPExcel_Cell::columnIndexFromString($sCol);

              for($iRow = 1; $iRow <= $nRow; ++$iRow)
              {
                  $line='' ;
          //         for($iCol = 0; $iCol <= $nCol; ++$iCol)
                  $iCol=0;
                  {
                      $val = $sheet->getCellByColumnAndRow($iCol, $iRow)->getValue();

                         if(strlen($val)==8 and substr($val,2,1)=='/' and substr($val,5,1)=='/')             
                         {
                             $fecha=$val;
                             $fecha='20'.substr($fecha,6,2).'-'.substr($fecha,3,2).'-'.substr($fecha,0,2);
                         }
                       if(empty($fecha1)){$fecha1=$fecha;}
                       if(empty($fecha2)){$fecha2=$fecha;}

                       if($fecha<$fecha1){$fecha1=$fecha;}
                       if($fecha>$fecha2){$fecha2=$fecha;}

                  }

              }

     }

          echo '<br> Comprobantes ';
          echo 'Desde : '.$fecha1.' ';
          echo 'Hasta : '.$fecha2.' ';

          if(!empty($fecha1) and !empty($fecha2))
          {
               $sql_dele='delete from cont2 where idnum2 in(select idnum1 from cont1 where fecha>="'.$fecha1.'" and fecha<="'.$fecha2.'" )';
               $res_dele=msql_query($sql_dele,$link_data);
          }

          $xsheet=0;
          foreach($sheetNames as $sheetName) 
          {
               $xsheet++;
              $sheet = $excel->getSheetByName($sheetName);
          //     $nRow = $sheet->getHighestRow();
              $sCol = $sheet->getHighestColumn(); // column name as string
              $nCol = PHPExcel_Cell::columnIndexFromString($sCol);
              $nRow = 65500;

              for($iRow = 1; $iRow <= $nRow; ++$iRow)
              {
                  $line='' ;
                  for($iCol = 0; $iCol <= $nCol; ++$iCol)
                  {
                      $val = $sheet->getCellByColumnAndRow($iCol, $iRow)->getValue();

                         if($iCol==2 and substr($val,0,3)=='---')
                         {
                              $docu=substr($val,4,3).'1';
                              $ptoe=substr($val,8,6);
                              $numero=substr($val,14,6);
                              $mes=substr($val,8,4).'-'.substr($val,12,2);

                              inse_maes('docu',$docu,$docu);
                              $sql_updt='update docu0 set docu_tipo="TRAN", docu_tabla="cont" where docu_codigo="'.$docu.'"';
                              $res_updt=msql_query($sql_updt,$link_data);

                              $sql_cont='select * from cont1 where docu="'.$docu.'" and ptoe="'.$ptoe.'" and numero="'.$numero.'"  ';
                              $res_cont=msql_query($sql_cont,$link_data);
                              $idnum=msql_result($res_cont,0,'idnum1');

                              if(empty($idnum))
                              {
                                   $sql_inse='insert into cont1(docu,ptoe,numero,fecha,status,idate)value("'.$docu.'","'.$ptoe.'","'.$numero.'","'.$mes.'-01","-",now())';
                                   $res_inse=msql_query($sql_inse,$link_data);

                                   $res_cont=msql_query($sql_cont,$link_data);
                                   $idnum=msql_result($res_cont,0,'idnum1');
                              }

                              echo '<br>=='.$docu.'-'.$ptoe.'-'.$numero.'-'.$mes.'-'.$idnum.' == ';
                              echo ' /'.$xsheet.' /'.$iRow;
                              continue;

                         }

                         if($iCol==0 and strlen($val)==8 and substr($val,2,1)=='/' and substr($val,5,1)=='/')
                         {
                             $fecha=$val;
                             $fecha='20'.substr($fecha,6,2).'-'.substr($fecha,3,2).'-'.substr($fecha,0,2);
                             $sql_updt='update cont1 set status="-", fecha="'.$fecha.'" where idnum1="'.$idnum.'"';
                             $res_updt=msql_query($sql_updt,$link_data);
     //                         echo '<br>Fecha:'.$fecha; 
                         }

                         if($iCol==1 and mb_stristr($val,'.'))
                         {
                             $ctas=$val;
     //                         $cant=$linea[count($linea)-3]-$linea[count($linea)-2];
                             $ctas_descri = $sheet->getCellByColumnAndRow(2, $iRow)->getValue();
                             $debito = $sheet->getCellByColumnAndRow(3, $iRow)->getValue();
                             $credito = $sheet->getCellByColumnAndRow(4, $iRow)->getValue();
                             $csubc = $sheet->getCellByColumnAndRow(5, $iRow)->getValue();
                             $cant=$debito-$credito;

     //                         $iddet=get_iddet($docu,$idnum);
                             $sql_iddet='select max(iddet) as iddet from cont2 where idnum2="'.$idnum.'"';
                             $res_iddet=msql_query($sql_iddet,$link_data);
                             $iddet=msql_result($res_iddet,0,'iddet');
                             $iddet++;

                             $sql_inse='insert into cont2(idnum2,iddet,ctas,cant,detalle)value("'.$idnum.'","'.$iddet.'","'.$ctas.'","'.$cant.'","'.$csubc.'")';
                             $res_inse=msql_query($sql_inse,$link_data);
                             inse_maes('ctas',$ctas,trim($ctas_descri));

                              echo ' /'.$ctas.'/'.$cant;

     //                         echo '<br>='.$sql_inse; 
                         }

                         if($iCol==2 and !empty($val))
                         {
                             $concepto=$val;
                             $concepto=str_replace('"','',$concepto);

     //                         $sql_updt='update cont1 set concepto="'.$concepto.'" where idnum1="'.$idnum.'"';
     //                         $res_updt=msql_query($sql_updt,$link_data);

                             $sql_updt='update cont2 set ctas_1=ctas, ctas_2=ctas, detalle="'.$concepto.'" where idnum2="'.$idnum.'"';
                             $res_updt=msql_query($sql_updt,$link_data);
                         }              





                  }

              }

     //          fwrite($fo, "\n");
          }

          
     }
     
     if($ctas_mayor==1)
     {
          $xsheet=0;
          foreach($sheetNames as $sheetName) 
          {
               $xsheet++;
              $sheet = $excel->getSheetByName($sheetName);
          //     $nRow = $sheet->getHighestRow();
              $sCol = $sheet->getHighestColumn(); // column name as string
              $nCol = PHPExcel_Cell::columnIndexFromString($sCol);
//               $nRow = 65500;
              $nRow = 40000;

              for($iRow = 1; $iRow <= $nRow; ++$iRow)
              {
                  $line='' ;
                  $idnum=0; 
                   
                  for($iCol = 0; $iCol <= $nCol; ++$iCol)
                  {
                      $val = $sheet->getCellByColumnAndRow($iCol, $iRow)->getValue();

                         if($iCol==0 and strlen($val)==8 and substr($val,2,1)=='/' and substr($val,5,1)=='/')
                         {
                             $fecha=$val;
                             $fecha='20'.substr($fecha,6,2).'-'.substr($fecha,3,2).'-'.substr($fecha,0,2);
//                              $sql_updt='update cont1 set status="-", fecha="'.$fecha.'" where idnum1="'.$idnum.'"';
//                              $res_updt=msql_query($sql_updt,$link_data);
                         }

                       
                         if($iCol==1 and mb_stristr($val,'.'))
                         {$ctas=$val;}

                       
                         if($iCol==5)
                         {
//                               COM 202312002099

                              $docu=substr($val,0,3).'1';
                              $ptoe=substr($val,4,6);
                              $numero=substr($val,10,6);
                              $mes=substr($val,4,4).'-'.substr($val,8,2);

//                               inse_maes('docu',$docu,$docu);
//                               $sql_updt='update docu0 set docu_tipo="TRAN", docu_tabla="cont" where docu_codigo="'.$docu.'"';
//                               $res_updt=msql_query($sql_updt,$link_data);

                              $sql_cont='select * from cont1 where docu="'.$docu.'" and ptoe="'.$ptoe.'" and numero="'.$numero.'"  ';
                              $res_cont=msql_query($sql_cont,$link_data);
                              $idnum=msql_result($res_cont,0,'idnum1');

//                               if(empty($idnum))
//                               {
//                                    $sql_inse='insert into cont1(docu,ptoe,numero,fecha,status,idate)value("'.$docu.'","'.$ptoe.'","'.$numero.'","'.$mes.'-01","-",now())';
//                                    $res_inse=msql_query($sql_inse,$link_data);

//                                    $res_cont=msql_query($sql_cont,$link_data);
//                                    $idnum=msql_result($res_cont,0,'idnum1');
//                               }

//                               echo '<br>=='.$docu.'-'.$ptoe.'-'.$numero.'-'.$mes.'-'.$idnum.' == ';
//                               echo ' /'.$xsheet.' /'.$iRow;
//                               continue;

                         }

                         if($iCol==6){$concepto=$val;}
                         if($iCol==7){$enti=$val;}
                         if($iCol==8){$enti_descri=$val;}
                       
                       if(!empty($idnum))
                       {
                         inse_maes('enti',$enti,$enti_descri);
                        $sql_updt='update cont1 set concepto="'.$concepto.'", enti="'.$enti.'" where idnum1="'.$idnum.'"';
                        $res_updt=msql_query($sql_updt,$link_data);
                       }

                       
                       
//                          if($iCol==1 and mb_stristr($val,'.'))
//                          {
//                              $ctas=$val;
//      //                         $cant=$linea[count($linea)-3]-$linea[count($linea)-2];
//                              $ctas_descri = $sheet->getCellByColumnAndRow(2, $iRow)->getValue();
//                              $debito = $sheet->getCellByColumnAndRow(3, $iRow)->getValue();
//                              $credito = $sheet->getCellByColumnAndRow(4, $iRow)->getValue();
//                              $csubc = $sheet->getCellByColumnAndRow(5, $iRow)->getValue();
//                              $cant=$debito-$credito;

//      //                         $iddet=get_iddet($docu,$idnum);
//                              $sql_iddet='select max(iddet) as iddet from cont2 where idnum2="'.$idnum.'"';
//                              $res_iddet=msql_query($sql_iddet,$link_data);
//                              $iddet=msql_result($res_iddet,0,'iddet');
//                              $iddet++;

//                              $sql_inse='insert into cont2(idnum2,iddet,ctas,cant,detalle)value("'.$idnum.'","'.$iddet.'","'.$ctas.'","'.$cant.'","'.$csubc.'")';
//                              $res_inse=msql_query($sql_inse,$link_data);
//                              inse_maes('ctas',$ctas,trim($ctas_descri));

//                               echo ' /'.$ctas.'/'.$cant;

//      //                         echo '<br>='.$sql_inse; 
//                          }

//                          if($iCol==2 and !empty($val))
//                          {
//                              $concepto=$val;
//                              $concepto=str_replace('"','',$concepto);

//      //                         $sql_updt='update cont1 set concepto="'.$concepto.'" where idnum1="'.$idnum.'"';
//      //                         $res_updt=msql_query($sql_updt,$link_data);

//                              $sql_updt='update cont2 set ctas_1=ctas, ctas_2=ctas, detalle="'.$concepto.'" where idnum2="'.$idnum.'"';
//                              $res_updt=msql_query($sql_updt,$link_data);
//                          }              





                  }

              }

          }
          
     }
     
     if($ctas_cambio==1)
     {
          $xsheet=0;
          foreach($sheetNames as $sheetName) 
          {
               $xsheet++;
              $sheet = $excel->getSheetByName($sheetName);
          //     $nRow = $sheet->getHighestRow();
              $sCol = $sheet->getHighestColumn(); // column name as string
              $nCol = PHPExcel_Cell::columnIndexFromString($sCol);
//               $nRow = 65500;
              $nRow = 100;

              for($iRow = 1; $iRow <= $nRow; ++$iRow)
              {
                  $line='' ;
                  $idnum=0; 
                  $docums='';
                   
                  for($iCol = 0; $iCol <= $nCol; ++$iCol)
                  {
                      $val = $sheet->getCellByColumnAndRow($iCol, $iRow)->getValue();

                         if($iCol==0 and strlen($val)==8 and substr($val,2,1)=='/' and substr($val,5,1)=='/')
                         {
                             $fecha=$val;
                             $fecha='20'.substr($fecha,6,2).'-'.substr($fecha,3,2).'-'.substr($fecha,0,2);
//                              $sql_updt='update cont1 set status="-", fecha="'.$fecha.'" where idnum1="'.$idnum.'"';
//                              $res_updt=msql_query($sql_updt,$link_data);
                         }

                       
                         if($iCol==0 and mb_stristr($val,'.'))
                         {$ctas0=$val;}

                         if($iCol==1)
                         {$docums=$val;}

                         if($iCol==2 and mb_stristr($val,'.'))
                         {$ctas1=$val;}

                       
//                        echo '<br>===';
//                        echo '==='.$ctas0;
//                        echo '==='.$docums;
//                        echo '==='.$ctas1;
                       
                       if(substr($docums,0,3)=='DNA')
                       {
                        $sql_updt ='update cont1 left join cont2 on idnum1=idnum2 ';
                        $sql_updt.='set ctas_2="'.$ctas1.'" ';
                        $sql_updt.='where ctas_1="'.$ctas0.'"';
                        $sql_updt.='and fecha>="2023-01-01" ';
                        $sql_updt.='and fecha<="2023-12-31" ';
                        $sql_updt.='and concepto like "%'.$docums.'%"';
                        $res_updt=msql_query($sql_updt,$link_data);
                       }

                       if(substr($docums,0,4)=='TODO')
                       {
                        $sql_updt ='update cont1 left join cont2 on idnum1=idnum2 ';
                        $sql_updt.='set ctas_2="'.$ctas1.'" ';
                        $sql_updt.='where ctas_1="'.$ctas0.'"';
                        $sql_updt.='and fecha>="2023-01-01" ';
                        $sql_updt.='and fecha<="2023-12-31" ';
//                         $sql_updt.='and concepto like "%'.$docums.'%"';
                        $res_updt=msql_query($sql_updt,$link_data);
                       }

                       



                  }

              }

          }
          
     }
     

     
     
// ini_set('memory_limit', '1024M');
     
     
}

// $sql_dtr1='update cont1 set docu="DTR1" where docu like "ASI1" and concepto like "Asiento de cierre auto%"';
// $res_dtr1=msql_query($sql_dtr1,$link_data);


?>

<script>
function load_ldc2(idfile)
{
     var color1=document.getElementById('color1').innerHTML;
     var color2=document.getElementById('color2').innerHTML;
     
     var xfile=document.getElementById(idfile)
     if(xfile.files.length==0)
     {
          document.getElementById(idfile).click();
          return;
     }
          
     Swal.fire({
       title: 'Subir Archivo ?',
       text: document.getElementById(idfile).files.length+' Archivos',
       icon: 'warning',
       focusCancel: true,
       showCancelButton: true,
       confirmButtonColor: color1,
       cancelButtonColor: 'darkred',
       confirmButtonText: 'SI, Subir!'
     }).then((result) =>
     {
          if (result.isConfirmed){
               var data;
               for(var idx=0; idx<xfile.files.length; idx++)
               {
                    data=new FormData();
                    data.append('script','load_ldc2');
                    data.append('tabla','fdoc');
//                     data.append('docu',docu);
//                     data.append('idnum',idnum);
//                     data.append('iddet',iddet);
                    data.append('xfile',xfile.files[idx]);
                    exe_ajax(data,'','',false);
//                     console.log('*/*/*/*');
//                     console.log(idx);
//                     console.log(xfile.files[idx]);
               }
//                location.reload();
          }
     })
     
}
</script>
