🌹🏠🌹？》《》？《》？<?php
include "../include/inicio.php";

$db->startTransaction();

$p_fecha_proc = date("Ymd H:i:s");

$f_prioridad = '0';
//si el sector es logistica tomo el valor seteado para f_prioridad
if($_SESSION['sector'] == 'L'){
  if($_REQUEST['f_prioridad'] == '1'){
    $f_prioridad = '1';
  }
}

$observacion = str_replace('ñ', 'n', $_REQUEST['observacion']);
$fecha_difer = $_REQUEST['fecha_difer'];
$a_espera_logistica = $_REQUEST['a_espera_logistica'];

if( strlen($fecha_difer) == 10){
  list($dia, $mes, $anio) = split("/", $fecha_difer);
  //$anio = "20".$anio;
  $fecha_difer = $dia."/".$mes."/".$anio;
}
if($a_espera_logistica != ''){
  if($a_espera_logistica == 'si'){
    $a_espera_logistica = 'S'; 
  }else{
    $a_espera_logistica = 'N';
  }
}

//si son pasadas las 14:00 hs debemos ir al proximo dia habil
$hora = date("H");
$hoy = date("Y-m-d");
if($hora >= 14){
  $diaValido = false;
  $manana = manana($hoy);
  while (!$diaValido){
    //vemos que dia es mañana
    //si manana es sabado
    if(6 == date("w", strtotime($manana))){
      //nos vamos hasta el lunes
      $manana = manana(manana($manana));
    }else{
      //si mañana es domingo nos vamos al lunes
      if(0 == date("w", strtotime($manana))){
        $manana = manana($manana);
      }else{
        //vemos si es feriado
        $manana_forma = date("d/m/y", strtotime($manana));
        $sql = "SELECT 1 AS feriado
                  FROM feriados
                 WHERE fecha = '$manana_forma'";
        $feriado = $db->campos($sql, 'feriado');
        //si es feriado vamos al siguiente dia
        if($feriado){
          $manana = manana($manana);
        }else{
          //si no es feriado me quedo con la fecha y corto la ejecucion
          $hoy = ymd_dmy($manana);
          $diaValido = true;
        }
      }
    }
  }
}else{
  $hoy = date("d/m/Y");
}

$remitos = split("@", rtrim( (string)$_REQUEST['selec'],'@') );
$problema = false;

if ($fecha_difer != ''){
   $p_aux  = substr($fecha_difer, 6,4)."-".
             substr($fecha_difer, 3,2)."-".
             substr($fecha_difer, 0,2);
   //$p_fec1 = new DateTime($fecha_difer);
   $p_fec1 = new DateTime($p_aux);
   $p_fec2 = new DateTime();
}
if($fecha_difer != '' and 
   $p_fec1->getTimestamp() < $p_fec2->gettimestamp() ){
  $problema = true;
  $smarty->assign("mensaje", "ATENCION: La fecha de diferimiento no puede ser anterior a hoy.");
  $smarty->mostrar("alertas.tpl");
}

foreach($remitos as $remito){
  list($c_empresa, $tipo_doc, $sucursal, $numero_remito, $factura, $letra, $cod_estado, $contado) = split("_", $remito);
  if($cod_estado == 6 or $cod_estado == 11 or $cod_estado == 8 or $cod_estado == 99){
    $problema = true;
    $smarty->assign("mensaje", "ATENCION: uno o mas remitos seleccionados poseen estados que no admiten esta operacion. Reviselos e intente nuevamente.");
    $smarty->mostrar("alertas.tpl");
  }else{
    if($_SESSION['sector'] == 'I' and $contado != 'N'){
      $problema = true;
      $smarty->assign("mensaje", "ATENCION: uno o mas remitos seleccionados poseen contado en S. Los usuarios tipo I no pueden operar sobre esos remitos.");
      $smarty->mostrar("alertas.tpl");
    }
  }
}
if(!$problema){
  foreach($remitos as $remito){
    list($c_empresa, $tipo_doc, $sucursal, $numero_remito, $factura, $letra, $cod_estado, $contado) = explode("_", $remito);
    //vemos las diferencias respecto a lo cargado anteriormente
    $sql = "SELECT obser, fecha_libera, fecha_libera_log,
                   espera, espera_logistica, fecha_difer,
                   prioridad
              FROM rem_cab LEFT JOIN rem_obser ON (rem_cab.empresa    = rem_obser.empresa
                                                   AND rem_cab.tdoc   = rem_obser.tdoc
                                                   AND rem_cab.letra  = rem_obser.letra
                                                   AND rem_cab.sucur  = rem_obser.sucur
                                                   AND rem_cab.numero = rem_obser.numero)
             WHERE rem_cab.empresa = '$c_empresa'
               AND rem_cab.tdoc    = '$tipo_doc'
               AND rem_cab.letra   = '$letra'
               AND rem_cab.sucur   = '$sucursal'
               AND rem_cab.numero  = '$numero_remito'";
    $valoresActuales = $db->resultado($sql);
    
    //recorro y veo si esto tiene diferencias con lo que tengo que grabar ahora
    foreach($valoresActuales as $valor){
      if($observacion){
        if($valor['obser'] != $_REQUEST['observacion']){
          $log['obser']['anterior'] = $valor['obser'];
          $log['obser']['nuevo'] = $observacion;
        }
      }
      if($_REQUEST['fecha_difer']){
        $fecha_difer_compara = $_REQUEST['fecha_difer'];
      }else{
        $fecha_difer_compara = '';
      }
      //if($valor['fecha_difer'] != $_REQUEST['fecha_difer']){
      if($valor['fecha_difer'] != $fecha_difer_compara){
        $log['fecha_difer']['anterior'] = $valor['fecha_difer'];
        //$log['fecha_difer']['nuevo'] = $_REQUEST['fecha_difer'];
        $log['fecha_difer']['nuevo'] = $fecha_difer_compara;
      }
      if($a_espera_logistica){
        if($valor['espera_logistica'] != $a_espera_logistica){
          $log['espera_logistica']['anterior'] = $valor['espera_logistica'];
          $log['espera_logistica']['nuevo'] = $a_espera_logistica;
          if($a_espera_logistica == 'S'){
            $fecha_libera_log = '';
          }else{
            $fecha_libera_log = $hoy;
          }
          if($valor['fecha_libera_log'] != $fecha_libera_log){
            $log['fecha_libera_log']['anterior'] = $valor['fecha_libera_log'];
            $log['fecha_libera_log']['nuevo'] = $fecha_libera_log;
          }
        }
      }
      if($f_prioridad){
        if($valor['prioridad'] != $f_prioridad){
          if($f_prioridad == '1'){
            $anterior = 'N';
            $nuevo = 'S';
          }else{
            $anterior = 'S';
            $nuevo = 'N';          
          }
          $log['prioridad']['anterior'] = $anterior;
          $log['prioridad']['nuevo'] = $nuevo;        
        }
      }
    }
    foreach($log as $campo => $valores){
      $valorAnterior = $valores['anterior'];
      $valorNuevo = $valores['nuevo'];
      $sql = "INSERT INTO rem_cab_log VALUES ('$c_empresa', '$tipo_doc', '$letra',
                                              '$sucursal', '$numero_remito', '$campo', 
                                              '$valorAnterior', '$valorNuevo', 'N',
                                              '$_SESSION[UsuarioConectado]', '$p_fecha_proc')";
      $db->ejecutar($sql);
    }
    
    //veo si existen datos de observacion en la tabla rem_obser
    $sql = "SELECT 1
              FROM rem_obser
             WHERE empresa = '$c_empresa'
               AND tdoc    = '$tipo_doc'
               AND letra   = '$letra'
               AND sucur   = '$sucursal'
               AND numero  = '$numero_remito'";
    $existe = $db->campos($sql);
    
    if($existe){
      $sql = "UPDATE rem_obser
                 SET obser     = '$observacion',
                     estado    = '$cod_estado',
                     prioridad = '$f_prioridad'
               WHERE empresa   = '$c_empresa'
                 AND tdoc      = '$tipo_doc'
                 AND letra     = '$letra'
                 AND sucur     = '$sucursal'
                 AND numero    = '$numero_remito'";
    }else{
      $sql = "INSERT INTO rem_obser VALUES('$c_empresa','$tipo_doc','$letra','$sucursal','$numero_remito','$observacion','','$f_prioridad','$cod_estado')";
    }
    $db->ejecutar($sql);

     if($a_espera_logistica != ''){
      if($a_espera_logistica == 'S'){
        $fecha_libera_log = '';
      }else{
        $fecha_libera_log = $hoy;
      }

      $sql = "UPDATE rem_cab
                 SET espera_logistica = '$a_espera_logistica',
                     fecha_libera_log = '$fecha_libera_log',
                     fecha_difer      = '$fecha_difer'
               WHERE empresa          = '$c_empresa'
                 AND tdoc             = '$tipo_doc'
                 AND letra            = '$letra'
                 AND sucur            = '$sucursal'
                 AND numero           = '$numero_remito'";
      $db->ejecutar($sql);
    }

    //$fecha_difer      = date("Ymd",strtotime($fecha_difer));
    $sql = "UPDATE rem_cab
               SET fecha_difer      = '$fecha_difer'
             WHERE empresa          = '$c_empresa'
               AND tdoc             = '$tipo_doc'
               AND letra            = '$letra'
               AND sucur            = '$sucursal'
               AND numero           = '$numero_remito'";
    $db->ejecutar($sql);

    //veo que fechas tengo en rem_cab
    $sql = "SELECT fecha_libera_log, 
                   fecha_difer, fecha_disp
              FROM rem_cab
             WHERE empresa = '$c_empresa'
               AND tdoc    = '$tipo_doc'
               AND letra   = '$letra'
               AND sucur   = '$sucursal'
               AND numero  = '$numero_remito'";
    $fechas = $db->campos($sql);
    
    //si tengo fecha_difer, ini_comp sera igual a ella
    if( strlen($fechas['fecha_difer']) > 0 &&
        $fechas['fecha_difer'] != '1900-01-01' ){
      $nueva_fecha_ini_comp = $fechas['fecha_difer'];
    }else{
      //si tengo fecha_libera_log, ini_comp sera igual a ella
      if( strlen($fechas['fecha_libera_log']) > 0 &&
          $fechas['fecha_libera_log'] != '1900-01-01' ){
        $nueva_fecha_ini_comp = $fechas['fecha_libera_log'];
      }else{
        //si tengo fecha_disp, ini_comp sera igual a ella
        $nueva_fecha_ini_comp = $fechas['fecha_disp'];
      }
    }
  
    //if(strpos($nueva_fecha_ini_comp, '-')){
    //  $nueva_fecha_ini_comp = ymd_dmy($nueva_fecha_ini_comp);
    //}

    $nueva_fecha_ini_comp = date("Ymd",strtotime($nueva_fecha_ini_comp));
    if ($nueva_fecha_ini_comp == '19691231' ||
        $nueva_fecha_ini_comp == '1969-12-31' ){
      $nueva_fecha_ini_comp = '';
    }
    $sql = "UPDATE rem_cab
               SET fecha_ini_comp = '$nueva_fecha_ini_comp'
             WHERE empresa        = '$c_empresa'
               AND tdoc           = '$tipo_doc'
               AND letra          = '$letra'
               AND sucur          = '$sucursal'
               AND numero         = '$numero_remito'";
    $db->ejecutar($sql);
  }
  
  $db->commit();
  
  $smarty->mostrar("updObservacionGrupal.tpl");
}

?>
