<?php
declare(strict_types=0);
$msc = microtime(true);

if(empty($zid)){$zid='dl_'.$ztabla;}
if(empty($zsize)){$zsize=1;}

if(empty($zstyle)){$zstyle.=';';}
if(!empty($zsize) and $zsize!=1){$zstyle.='font-size:'.($zsize*100).'%;';$zstyle.='height:'.($zsize*100).'%;';}
if(!empty($zwidth)){$zstyle.='width:'.$zwidth.';';}


$tipo_tabla='maes';
if(empty($ztabla))
{
//      if(!empty($zdocu))
     {
      $sql_gettab='select * from docu0 where docu_codigo like "'.$zdocu.'%"  and ifnull(docu_status,"-")!="X" order by docu_codigo';
      $res_gettab=msql_query($sql_gettab,$link_data);
      if(!msql_error($link_data))
        {
            $ztabla=@msql_result($res_gettab,0,'docu_tabla').'';
            $tipo_tabla=@msql_result($res_gettab,0,'docu_tipo').'';
        }
     }
}
$tipo_tabla=strtolower($tipo_tabla);


if(empty($zcolu))
{
     $zcolu=$ztabla.'_codigo,'.$ztabla.'_descri';
     if($ztabla=='item'){$zcolu.=',clor_descri,tlla_descri';}
}
else
{
     // if($ztabla=='item'){$zcolu.=',clor_codigo,clor_descri,tlla_codigo,tlla_descri';}
//      if($ztabla=='item'){$zcolu.=',clor_descri,tlla_descri';}
}     



if(mb_stristr($zcolu,','))
{
   $zvalue=substr($zcolu,0,strpos($zcolu,','));
   $zoption=substr($zcolu,strpos($zcolu,',')+1);
}
else
{$zvalue=$zcolu; $zoption=$zcolu;}

$sql_datal ='select distinct ';
$sql_datal.= $zvalue.',';
$sql_datal.= $zoption.',';
$sql_datal.='concat('.str_replace(',','," .",',$zoption).') as datalist, ';

if($ztabla=='lote')
{
     $sql_datal.= $ztabla.'_fabrica as fabrica, ';
     $sql_datal.= $ztabla.'_caduca as caduca, ';
}

if($ztabla=='item' and mb_stristr($zcolu,'codigo'))
{
     $sql_datal.= $ztabla.'_codigov as codigov, ';
     $sql_datal.= $ztabla.'_puni as puni, ';
     $sql_datal.= $ztabla.'_pvp1 as pvp1, ';
     $sql_datal.= $ztabla.'_duni as duni, ';
     $sql_datal.= $ztabla.'_dpre as dpre, ';
     $sql_datal.= $ztabla.'_dcos as dcos, ';
}

if(mb_stristr('item.enti',$ztabla) and empty($zcolu))
{
   $sql_datal.= 'year('.$ztabla.'_lused) as fanio,';
   $sql_datal.= 'month('.$ztabla.'_lused) as fmes, ';
}
    
if(!empty($zdocu))
{
   $sql_datal.= 'year(fecha) as fanio, ';
   $sql_datal.= 'month(fecha) as fmes, ';
}
    
$sql_datal.= 'ifnull('.$ztabla.'_status,"-") as status ';

if($tipo_tabla=='maes')
{$sql_datal.=' from '.$ztabla.'0 ';}

if($tipo_tabla=='tran')
{$sql_datal.=' from '.$ztabla.'1 ';}

if(mb_stristr('item',$ztabla))
{
     $sql_datal.= 'left join clor0 on item_clor=clor_codigo ';
     $sql_datal.= 'left join tlla0 on item_tlla=tlla_codigo ';
}

if(!empty($zdocu))
{
     $sql_datal.= 'left join '.$ztabla.'2 on idnum1=idnum2 ';
}


$sql_datal.=' where ifnull('.$ztabla.'_status,"") not in("I","X") ';


if(!empty($zwhere)){$sql_datal.=' and '.$zwhere.' ';}


if(!empty($ztabla))
{
   $sql_datal.=' and ifnull('.$ztabla.'_descri,"")!=""  ';
}

if(!empty($zdocu))
{
   $sql_datal.=' and docu like "'.$zdocu.'%" ';
     
   
     if(mb_stristr($zcolu,','))
     {}
     else
     {$sql_datal.=' and ifnull('.$zcolu.',"")!=""  ';}
     

}

if(mb_stristr('item.enti.cntn',$ztabla) and empty($zcolu))
{
   $lyear=strtotime('-12 month');
   $lyear=date('Y-m-'.'01',$lyear);
   $sql_datal.=' and '.$ztabla.'_lused>="'.$lyear.'" ';
}


if(!empty($zdocu)){$sql_datal.= 'group by '.$zvalue.' ';}
$xorder='order by '.$zoption;

if(mb_stristr('item.enti',$ztabla) and empty($zcolu))
{$xorder='order by fanio desc, fmes desc,'.$ztabla.'_descri,'.$ztabla.'_codigo ';}	

if(mb_stristr('clor',$ztabla))
{$xorder='order by clor_tipo,clor_hexa,fanio desc, fmes desc,'.$ztabla.'_descri,'.$ztabla.'_codigo ';}	

if(mb_stristr('docu',$ztabla))
{$xorder='order by '.$ztabla.'_descri ';}	

if(mb_stristr('lote',$ztabla))
{$xorder='order by '.$ztabla.'_caduca,'.$ztabla.'_codigo,'.$ztabla.'_codigo ';}	

if(mb_stristr('ctas.ctag.ctad.suco.cair.fpag.cntn.vhcl.',$ztabla))
{$xorder='order by '.$ztabla.'_codigo ';}	

if(mb_stristr('tlla.asub',$ztabla))
{$xorder='order by '.$ztabla.'_codigo ';}	

if(mb_stristr('orat.bsqj',$ztabla))
{$xorder='order by '.$ztabla.'_codigo ';}	



if(!empty($zcolu))
{
     $xorder=str_replace('order by ','order by '.$zcolu.',',$xorder);
     if(mb_stristr('.impor.',$zcolu))
     {$xorder=str_replace('order by '.$zcolu,'order by '.$zcolu.' desc ',$xorder);}
}

if(!empty($zorder))
{$sql_datal.='order by '.$zorder.' ';}

if(empty($zorder))
{$sql_datal.=$xorder;}

if(mb_stristr('.impor.',$zcolu))
{
//      $sql_datal.=' desc '; 
//  echo '<br>=='.$sql_datal;
}


if($zlimit>0){$sql_datal.=' limit '.$zlimit;}

$res_datal=mysqli_query($link_data,$sql_datal);

if(msql_error($link_data))
{
     maes_view($ztabla);
     $res_datal=mysqli_query($link_data,$sql_datal);
}

if(!msql_error($link_data)){$dlok=1;}
else
{
   {
      $sql_datal=str_replace($ztabla.'0 ',$ztabla.'1 ',$sql_datal);
      $sql_datal=str_replace('_codigo','',$sql_datal);
      $sql_datal=str_replace($ztabla.'_status','status',$sql_datal);
      $sql_datal=str_replace($ztabla.'_descri','numero',$sql_datal);
      $res_datal=msql_query($sql_datal,$link_data);
      if(!msql_error($link_data)){$dlok=1;}
      else
      {
        //  $sql_datal=str_replace($ztabla.'1 ',$ztabla.'12 ',$sql_datal);
         $sql_datal=str_replace($ztabla.'1 ',$ztabla.'1 left join '.$ztabla.'2 on idnum1=idnum2 ',$sql_datal);
         $res_datal=msql_query($sql_datal,$link_data);
         if(!msql_error($link_data)){$dlok=1;}
      }
   }
}

// echo '<br>=== '.$sql_datal;
// echo '<br>'.msql_error($link_data);

if(empty($zid)){$zid=$ztabla;}
if(empty($zid)){$zid=microtime()*1000000;}


$domd_d=new DomDocument();
     $domd_d->encoding = 'utf-8';
     $domd_d->xmlVersion = '1.0';
     $domd_d->formatOutput = true;

$vrdatal=$domd_d->appendChild($domd_d->createElement("div"));   

$datal=$vrdatal->appendChild($domd_d->createElement("datalist"));
if(!empty($zid)){$datal->setAttribute("id",$zid);}
if(!empty($zname)){$datal->setAttribute("name",$zname);}
$options=$datal->appendChild($domd_d->createElement("options"));   
if(!empty($zid)){$options->setAttribute("id",$zid.'_opts');}

msql_data_seek($res_datal);
while($aso_datal=msql_fetch_assoc($res_datal))
{
   $option='';
   $xvalue=trim($aso_datal[$zvalue]);
   $xoption=$aso_datal['datalist'];
   if(empty($xoption))
   {
        $xoption=$aso_datal[$ztabla.'_descri'];
        if($ztabla=='item')
        {
             if(!empty($aso_datal['clor_descri'])){$xoption.=' .'.$aso_datal['clor_descri'];}
             if(!empty($aso_datal['tlla_descri'])){$xoption.=' .'.$aso_datal['tlla_descri'];}
        }
   }
        if($ztabla=='lote')
        {
//              $xoption='CAD.'.$aso_datal[$ztabla.'_caduca'];
             if(!empty($aso_datal['caduca']))
             {$xoption='Cad. '.$aso_datal['caduca'];}
        }
     
  
   if(mb_stristr($xoption,'->')){$xoption='';}
   if(mb_stristr($xoption,'***')){$xoption='';}
     
    if(!empty($xvalue) and !empty($xoption))
    {
      
     if(empty($ztabla))
     {
          if(mb_stristr($xvalue,'.') and ((int)$xvalue*1)!=0){$xvalue=rtrim($xvalue,'0'); $xvalue.='0';}
          if(mb_stristr($xoption,'.') and ((int)$xoption*1)!=0){$xoption=rtrim($xoption,'0'); $xoption.='0';}
     }

     if($ztabla=='ctas' and strlen($xvalue)>5)
     {
          $ctas_deta=ctas_deta($xvalue);
          if($ctas_deta)
          {$xoption='*** '.$xoption.' ***' ;}
//           {$xoption='»»» '.$xoption.' «««' ;}
     }
         
//      if($ztabla=='item' and $user_codigo==2)
//      {echo '<br>=='.$ztabla.$aso_datal['codigov'] ;}
          
     if(mb_stristr($zcolu,'codigo'))
     {
          
     if($ztabla=='item' and !empty($zlpre))
     {
          $deciprec=$aso_datal['dpre'];
          if(empty($deciprec)){$deciprec=2;}
          $itemprec=$aso_datal[$zlpre];
          $itemprec=($itemprec*(pow(10,$deciprec)));
          $itemprec=ceil($itemprec);
          $itemprec=intval($itemprec);
          $itemprec=($itemprec/(pow(10,$deciprec)));
          $itemprec=number_format($itemprec,$deciprec);
          $xoption.=' ($_'.$itemprec.')'; 
     }

     if(!empty($zstockv) and 1==2)
     {
//           if(mb_stristr($aso_datal['item_descri'],'REXONA'))
          {
          $stock=sal_item($zcodigo,$zbode,'D');
          $zstock=$stock['uni_fin'];
          {$xoption.=' ('.number_format($zstock,$aso_datal['duni']).')'; }
          }
     }
          
          
          
//      if($ztabla=='item' and $aso_datal['codigov']!='')
     if($ztabla=='item' and $aso_datal['codigov']!='' and !mb_stristr($aso_datal['item_codigo'],$aso_datal['codigov']))
     {$xoption.=' ('.$aso_datal['codigov'].')'; }
          
          
          

     if($ztabla=='item' and $aso_datal['tlla_descri']!='')
     {$xoption.=' ('.$aso_datal['tlla_descri'].')';}

     if($ztabla=='clor' and $aso_datal['clor_hexa']!='')
     {$xstyle='font-weight:bold;'.'background-color:'.$aso_datal['clor_hexa'].';';}
     }

//      if(!isset($osver)){$osver='';}
         
     if(mb_stristr($osver,'Edge'))
     {$xvalue.=' => '.trim($xoption); }
         
     $xvalue=strtoupper($xvalue);
     $xoption=strtoupper($xoption);
         
     $xoption=htmlspecialchars($xoption);
         // agrega codigo al final
  //  if(!mb_stristr($xoption,$xvalue) and !empty($xvalue))
  //  {$xoption.=' ('.$xvalue.')';}

     $xvalue=htmlspecialchars($xvalue);
         
// echo '**/*/'.$osver;
         
     $xoptgroup=false;
     if(!empty($ztabla))
     {
//           if(mb_stristr('ctas.item.enti',$ztabla)){$xoption=$xvalue.' - '.$xoption;}
          if($ztabla=='ctas' and $zcoddet==1)
          {if(!ctas_deta($xvalue)){$xoptgroup=true;}}
     }

     $eleoption='option';                    
     if($xoptgroup){$xoption=$xvalue.' - '.$xoption; $eleoption='optgroup'; }
         
     $option=$options->appendChild($domd_d->createElement($eleoption,$xoption));   
     $option->setAttribute("value",$xvalue);
//      if($xoptgroup){$option->setAttribute("readonly","");}
         
     if($ztabla=='clor' )
     {$option->setAttribute("class","bold");}
     if($ztabla=='clor' )
     {$option->setAttribute("style",$xstyle);}
    }
}


if($zdataf==1)
if(mb_stristr('enti.item',$ztabla))
{
     $dataf=$vrdatal->appendChild($domd_d->createElement("datafull"));
     
//      $res_datal=mysqli_query($link_data,$sql_datal);
     $sql_datal='select * '.substr($sql_datal,strpos($sql_datal,' from'));
     $res_datal=msql_query($sql_datal,$link_data);

     msql_data_seek($res_datal);
     while($aso_datal=msql_fetch_assoc($res_datal))
     {
     $div=$dataf->appendChild($domd_d->createElement("div"));
          $div->setAttribute("id",$ztabla.'_'.$aso_datal[$ztabla.'_codigo']);
          $div->setAttribute("descri",$aso_datal[$ztabla.'_descri']);
          if($ztabla=='enti')
          {
               $div->setAttribute("razsoc",$aso_datal[$ztabla.'_razsoc']);
               $div->setAttribute("nomcom",$aso_datal[$ztabla.'_nomcom']);
               $div->setAttribute("wsapp",$aso_datal[$ztabla.'_wsapp']);
          }
          if($ztabla=='item')
          {
               $div->setAttribute("puni1",$aso_datal[$ztabla.'_puni1']);
               $div->setAttribute("iva",$aso_datal[$ztabla.'_iva']);
               $div->setAttribute("ice",$aso_datal[$ztabla.'_ice']);
               $div->setAttribute("pvp1",$aso_datal[$ztabla.'_pvp1']);
          }
     }
     
}

$msc = microtime(true)-$msc;
$msc=round($msc,2);
$datal->setAttribute("msc",$msc);

// echo '<br>'.$zid.':'.$msc;
// echo $domd_d->saveXML();

if(empty($zdom))
{
     if($zxml==1){$zxml=$domd_d->saveHTML();}
     else{echo $domd_d->saveHTML();}
}     


include ('ele_reset.php');
?>