<?php session_start(); ?><!DOCTYPE html>
<html>
<head>
<link rel="ICON" href="../img/aade_el.png">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="author" content="www.incahellas.com, ΑΑΔΕ-ΔΥΠΗΛΥ-Ε">
<title>Α.Α.Δ.Ε. - ESend</title>

<link rel="stylesheet" href="../script/themes/base/ui.all.css">
<link rel="stylesheet" href="../ishop/adm.css">
<link rel="stylesheet" href="esend2.css">

<script src="../script/jquery.js"></script>
<script src="../script/jquery-ui.js"></script>
<script src="../ishop/xadm.js.php"></script>
<script src="esend.js"></script>

</head>
<body>
<?php
include("../lib/ado/adodb.inc.php");
include("../lib/generic.inc.php");
include("../lib/visual.inc.php");
include("esendlib.inc.php");
include("esend.inc.php");
$prof=new cPROFILER1();

if (isset($_REQUEST['INVAR']))
   $_SESSION['INVAR']=(bool)$_REQUEST['INVAR'];

ob_start();

$x2=new cX2();
$fu=(int)@$_REQUEST['FUNCTION'];

echo "<!-- mtime=".date('Y-m-d H:i:s',@filemtime('esend.php'))." FU=$fu uid=$x2->USERID -->";

if ($fu>2 && !in_array($fu,array(10,11,14,15,20,21,41,42,99))) {
   if (empty($_SESSION['USERID'])) {
      $fu=0;
   }
}

switch ($fu)
{
/*
case -2:
   echo md5('anasa1');
   break;
*/   
case -1:
   check_files();
   home_page();
   break;
case 0:
   home_page();
   break;
case 1: // company (eafdss owner) connection
   $_SESSION['FOR_ADMIN']=false;
   $_SESSION['FOR_MANUFACTURER']=false;
   usr_ask_login();
   break;
case 2:
   usr_verify_login();
   break;
case 3:
   ask_register();
   break;
case 4:
   process_register();
   break;   
case 5:
   re_activate();
   break;
case 6: // internal home page
   after_login();
   break;
case 7:
   logout();
   break;
case 9:
   activate_user();
   list_users();
   break;   
case 10:
   end_user_ask();
   break;
case 11:
   end_user_qry();
   break;
case 12:
   dev_ask_remind();
   break;
case 13:
   dev_do_remind();
   break;
case 14:
   $_SESSION['FOR_ADMIN']=true;
   usr_ask_login();
   break;
case 15:
   adm_verify_login();
   break;
case 16:
   ask_edit_usr();
   break;
case 17:
   process_edit_user();
   after_login();
   break;     
case 18:
   ask_myf_crede();
   break;
case 19:
   upd_myf_crede();
   after_login();
   break;
case 20:
   end_usr_ask_fhm();
   break;
case 21:
   end_usr_show_fhm();
   break;
case 41: // company (eafdss owner) connection
   $_SESSION['FOR_ADMIN']=false;
   $_SESSION['FOR_MANUFACTURER']=true;
   usr_ask_login();
   break;
case 42:
   maf_verify_login(); // manufacturer
   break;
case 43:
   ask_for_serials(); //* ειναι η φορμα που προηγείται της 44 query_serials */
   break;
case 44:
   query_serials();
   break;
case 45:
   ask_for_sfragisi();
   break;
case 46:
   insert_sfragisi();
   break;
case 49:
   ask_for_vlavi();//* είναι η φορμα αντίγραφο της ask_for_sfragisi οδηγεί στην insert_vlavi (50) //
   break;
case 50:
   insert_vlavi();   //* είναι η φορμα αντίγραφο της insert_sfragisi
   break;
case 51: //* είναι η φορμα αντίγραφο της ask_for_serials που προηγείται της 52 query_vlavi  ΕΤΟΙΜΗ*/
   ask_for_serials_vlavi(); 
   break;
case 52:
   query_vlavi();     
   break;
case 53:
   ask_update_vlavi();     
   break;
case 54:
   update_vlavi();     
   break;
case 55:
   ask_search_vlavi();     
   break;
case 56:
   search_vlavi();     
   break;
case 63:
   ask_update_vlavi_newmemory();
   break;
case 64:
   update_vlavi_newmemory();
   break;
case 99:
   home_page_adm();
   break;                 
case 100:
   refresh_setup();
   show_setup_FHM();
   break;    
case 101:
   show_setup_FHM();
   break;   
case 102:
   //add_vatno();
   refresh_vatno();
   show_setup_FHM();
   break;
case 104:
   ask_new_pass();
   break;           
case 105:
   set_new_pass();
   break;
case 106:
   fix_missing_aes();
   show_setup_FHM();
   break;
/*      
case 109:
   ask_view_s_filter();
   break;
*/
case 110:
   view_s_files();
   break;
case 111:
   delete_s_file();
   view_s_files();
   break;
case 112:
   recalc_s_sign();
   view_s_files();
   break;
case 113:
   s_files_stat();
   break;
case 114:
   ask_find_data();
   break;
case 115:
   do_find_data();
   break;            
case 116:
   upd_eid_udata();
   do_find_data();
   break;
case 120:
   request_s_real();
   break;
case 121:
   process_s_real();      
   break;   
case 130:
   request_s_plain();
   break;
case 131:
   process_s_plain();   
   break;
case 132:
   by_hand_ask_date();
   break;
case 133:
   by_hand_ask_input();
   break;
case 140:
   view_log(false);
   break;
case 141:
   view_log(true);
   break;
case 142:
   view_S_contents();
   break;
case 150:
   request_e_txt();
   break;
case 151:
   process_e_txt();
   break;
case 160:
   request_sha1();
   break;         
case 161:
   calculate_sha1();
   break;   
case 170:
   ask_report();
   break;
case 171:
   do_report();
   break;
case 178:
   view_myf_wait();
   break;
case 179:
   adm_init_myf();
   break;
case 180: // Καταστάσεις ΜΥΦ (υπόχρεος ΑΦΜ...)
   view_myf_list();
   break;
case 181: // Κατάλογος δημιουργημένων ΜΥΦ  
   adm_view_myf_all();
   break;   
case 182:
   view_myf_mon();
   break;
case 183:
   reset_nonoblig();
   view_myf_mon();
   break;
case 184:
   update_myf_mon();
   view_myf_analysis();
   break;
case 185:
   send_myf_month();
   break;            
case 186:
   send_myf_cancel();
   break;
case 187:
   adm_delete_myf();
   adm_view_myf_all();
   break;
case 188:
   view_myf_analysis();
   break;
case 189:
   mark_as_unsent();   
   view_myf_list();
   break;
case 190:
   check_progress();   
   view_myf_list();
   break;
case 191:
   resubmit_package();
   view_myf_list();
   break;
case 192:
   check_xml_errors();
   break;
case 193:
   zoom_myf_zoom();
   break;   
case 194:
   del_myf_rec();
   view_myf_analysis();
   break;
case 195:
   view_pkg_analysis();
   break;   
case 196:
   change_pkg_method();
   view_myf_list();
   break;
case 197:
   download_xml();
   break;
case 198:
   ask_for_invoice();
   break;
case 199:
   insert_invoice();
   break;
case 500:
   list_users();
   break;
case 501:
   reset_user_level();
   list_users();
   break;
case 502:
   re_list_FHM();
   break;
case 503:
   refresh_setupEx();
   show_setup_FHM();
   break;
case 506:
   ask_for_ldap();
   break;
case 507:
   show_ldap_info();
   break;
case 508:
   log_to_greek();
   view_log(false);
   break;
case 509:
   correct_HMERA();
   break;
case 510:
   correct_other_fields();
   break;
case 511:
   ask_for_sql();
   break;      
case 512:
   execute_sql();
   break;
case 513:
   edit_parameters(); // deprecated
   break;
case 514:
   upd_parameters(); // deprecated
   after_login();
   break;
case 515:
   dir_contents();
   break;   
/* case 800:
   d13_inspect();
   break;
case 801:
   d13_insert_99_pausi();
   break;
case 802:
   d13_insert_99_enarji();
   break; */
            
default:
   onUnknown($fu);
   break;              
}

$outs=ob_get_clean();
echo "<!-- MemUsed=".round(memory_get_peak_usage(true)/1048576.0, 1)."MB Elapsed=".round($prof->elapsed(), 3)."s -->";
// Print header  <td class=hdr_left onclick="goGgde()">&nbsp;</td>:
?>
<div class=Header>
<table class=Header border=0 cellspacing=0 cellpadding=0 width=100% height=100%>
   <tr>
      
      
      <td style="width:150px"><img src="../img/aade.png"     onclick="goGgde()">&nbsp;</td>
      
      
      <td class=hdr_center><span <?php
         if ($x2->EMAIL==='inca@incahellas.com') {
            echo "title=\"FU=$fu\"";
         } ?> style="font-size: 12pt;"> <br>ΗΛΕΚΤΡΟΝΙΚΗ <br>ΔΙΑΒΙΒΑΣΗ</span><br><br>
         <?php
            if (!empty($x2->USERID)) {
               echo "<img src=\"../img/user.gif\"> ".myhtml($x2->EMAIL)." <a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=7\">Logout</a>";
            }
         ?></td>
      <td class=hdr_right onclick="goMinfin()">&nbsp;</td>
      <td>&nbsp;</td>
   </tr>
</table>
</div>
<?php
// Print contents:
echo $outs;
?>
</body>
</html>
<?php
//--------------------------------------
// Functions
//--------------------------------------
function check_files()
{
   include('esend.tables.php'); 
}
//--------------------------------------
function check_required($ar1)
{
   foreach ($ar1 as $v1) {
      if (!isset($_REQUEST[$v1])) {
         uerror("Missing var(s)!");
         return false;
      }
   }
   // o.k.
   return true;
}
//--------------------------------------
function get_aeskey()
{ 
   $aeskey='';
   for ($i=0;$i<32;$i++) {
      $x=mt_rand(0,255);
      $aeskey .= sprintf('%02X',$x);
   }
   
   return $aeskey;
}
//--------------------------------------
function print_footer()
{
?>
<div class=Footer>
<table onclick="goGgde()">
   <tr>
      <td style="width:150px"><img src="../img/aade_el.png"></td>          
      <td><br>
         ΑΝΕΞΑΡΤΗΤΗ ΑΡΧΗ ΔΗΜΟΣΙΩΝ ΕΣΟΔΩΝ &copy; 2017</td>
   </tr>
</table>
</div>
<?php   
}
//--------------------------------------
function RefreshStr($x)
{
   return "<button type=button class=NavButton onclick=\"goTo($x)\" title=\"Ανανέωση\"><img src=\"../img/reset.png\"></button>";
}
//--------------------------------------
function GoBack()
{
   echo "<p><a href=\"javascript:goTo(6)\">Επιστροφή</a></p>";
}   
//--------------------------------------
function home_page()
{
?>
<table border=0 cellpadding=10>
<tr>
<td valign=top>
   <a class="mabutton mabutton1" href="javascript:goTo(41)"><div style="position:relative; top:14px;">Κατασκευαστές</div></a><br>
   <a class="mabutton mabutton2" href="javascript:goTo(10)"><div style="position:relative; top:6px;">Έλεγχος  <br> Αποδείξεων</div></a><br>
   <a class="mabutton mabutton3" href="javascript:goTo(1)"><div style="position:relative; top:14px;">Επιχειρήσεις</div></a><br>
   <a class="mabutton mabutton2" href="javascript:goTo(20)"><div style="position:relative; top:14px;">Έλεγχος ΦΗΜ</div></a><br>
</td>
<td valign=top width=600>
   <b>Οδηγίες λειτουργίας</b> 
   <p>
   Επιλέξτε το αντίστοιχο με την ιδιότητά σας πλήκτρο εισόδου και καταχωρήστε το όνομα χρήστη και τον 
   κωδικό πρόσβασης μοναδικής σύνδεσης, που χρησιμοποιείτε για την έισοδό σας στο Taxis.
   </p>

   <b>Είσοδος &quot;Κατασκευαστές&quot;</b>
   <p>
   Είσοδος εξουσιοδοτημένων εγκαταστατών ΦΗΜ.
   </p>

   <b>Είσοδος &quot;Έλεγχος Αποδείξεων&quot;</b>                         
   <p>
   Είσοδος για τον έλεγχο αυθεντικότητας ληφθέντων παραστατικών, πχ. αποδείξεων λιανικής.
   </p>
   
   <b>Είσοδος &quot;Επιχειρήσεις&quot;</b>
   <p>
   Είσοδος για τον έλεγχο υποβληθέντων στοιχείων S.TXT, ή καταχώριση χειρόγραφων στοιχείων.
   </p>
   
   
   <b>Είσοδος &quot;Έλεγχος ΦΗΜ&quot;</b>
   <p>
   Είσοδος για τον έλεγχο του ΑΦΜ ενός κατόχου ΦΗΜ : ταμειακής μηχανής, ΕΑΦΔΣΣ, ή ΑΔΗΜΕ.
   </p>


</td>
</tr>
</table>
<?php
   print_footer();
}
//--------------------------------------
function home_page_adm()
{
?>
<table border=0 cellpadding=10>
<tr>
<td valign=top>
   <a class="mabutton mabutton1" href="javascript:goTo(99)"><div style="position:relative; top:6px;">Υποστήριξη Κ.Ε.Σ.</div></a><br>
   <a class="mabutton mabutton2" href="javascript:goTo(99)"><div style="position:relative; top:-2px;">Υποστήριξη Παραγωγικής λειτουργίας</div></a><br>
   <a class="mabutton mabutton3" href="javascript:goTo(14)"><div style="position:relative; top:14px;">Διοίκηση</div></a><br>
</td>
<td valign=top width=600>
   <b>Οδηγίες λειτουργίας</b> 
   <p>
   Επιλέξτε το αντίστοιχο με την ιδιότητά σας πλήκτρο εισόδου και καταχωρήστε το όνομα χρήστη και τον 
   κωδικό πρόσβασης μοναδικής σύνδεσης, που χρησιμοποιείτε για την έισοδό σας στο Taxis.
   </p>
</td>
</tr>
</table>
<?php
   print_footer();
}
//--------------------------------------
function logout()
{
   global $x2;
   
   unset($_SESSION['USERID']);
   unset($_SESSION['ULEVEL']);
   unset($_SESSION['EMAIL']);
      
   $x2->USERID = 0;
   $x2->ULEVEL = -1; // undefined
   $x2->EMAIL = '';
   
   umessage('Logout succesfully!');
   
   home_page();
}
//--------------------------------------
function make_input_int($field, $maxlen, $default='')
{
   echo "<input type=text name=\"${field}\" id=\"id${field}\" maxlength=$maxlen value=\"";
   if (isset($_REQUEST[$field])) {
      echo myhtml($_REQUEST[$field])."\""; 
   }
   else {
      echo myhtml($default);
   }
   echo "\" ";
   if ($maxlen>=100) {
      echo " class=wideIn";
   }
   echo ">";
}
//--------------------------------------
function make_input($field, $maxlen, $default='')
{
   echo "<td>";
   make_input_int($field, $maxlen, $default);
   echo "</td>";
}
//--------------------------------------
function prepare_zend()
{   
   $ar1=explode('/',  strtr($_SERVER['PHP_SELF'], '\\', '/'));

   // new code 1-11-2017
   $n = count($ar1);
   while ($n>0) {
      $ext = pathinfo($ar1[$n-1], PATHINFO_EXTENSION);
      if (strcasecmp($ext, "php")==0) {
         break;
      }
      array_pop($ar1);
      $n--;
   }
   // end of new code

   if (count($ar1)>2) {
      array_pop($ar1);
      array_pop($ar1);
      $ar1[]='lib';
      $newpath=implode('/', $ar1).';../lib';
      set_include_path( $newpath );
   }
   else {
      echo "Can not set inlcude path";
      return;
   }   
   
   require_once('Zend/Mail/Transport/Smtp.php');
   require_once('Zend/Mail.php');
   
   $config = array('auth' => 'login', 'username' => 'esend.sekt@gmail.com', 'password' => '$19671967$', 
      'ssl' => 'ssl', 'port' => 465);
   $tr = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config);
   Zend_Mail::setDefaultTransport($tr);
   Zend_Mail::setDefaultFrom('esend.sekt@gmail.com', 'TaxCenter');
}   
//--------------------------------------
function dev_do_remind()
{
   global $x2;
   $db=&$x2->db;

   echo "<h1>Password reminder</h1>";
   
   prepare_zend();   
   
   do {
      if (empty($_REQUEST['EMAIL'])) {
         uerror("No email given!");
         break;
      }
      
      $query="SELECT PASSWD FROM ese_user WHERE EMAIL=:EMAIL";
      $data=array('EMAIL'=>$_REQUEST['EMAIL']);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror(__LINE__.$db->ErrorMsg());
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      
      if ($row===false) {
         umessage("User [".myhtml($_REQUEST['EMAIL'])."] does not exist!");
         break;
      }
      
      //mail($_REQUEST['EMAIL'], "Reminder from E-Send", "Your password is ".$row[0]);
      $mail = new Zend_Mail('UTF-8');
      $mail->addTo($_REQUEST['EMAIL']);
      $mail->setSubject("Reminder from E-Send");
      $mail->setBodyText("This is an automated email. Please do not answer.\n\nYour password is \"".$row[0]."\" (without the quotes).");
         
      try {
         $mail->Send();
         umessage("An email has been sent to the requested email. Please 
            check your mail after a minute or so.");
      }
      catch (Exception $e1) {
         umessage("Email error: ".$e1);
      }
      
   } while (false);
   
   echo "<button type=button onclick=\"goTo(0)\">Go back</button>";
}
//--------------------------------------
function dev_ask_remind()
{
?>
<h1>Password reminder</h1>

   <form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
   <input type=hidden name="FUNCTION" value="13">
   <table>
   <tr>
      <td>Login (email)</td>
      <?php make_input('EMAIL', 150); ?>
   </tr>
   <tr>
      <td></td>
      <td>
         <input type=submit value="Remind me">
         <input type=button value="Cancel" onclick="goTo(0)">
      </td>
   </tr>
   </table>
   </form>   
<?php
   print_footer();
}
//--------------------------------------
function query_esi_vat($bsales)
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=explode('-',$_REQUEST['FROMDATE']);
   if (count($ar1)<3) { $ar1=array('01', '01', '2000'); }
   $fromdate = sprintf("%04d%02d%02d", $ar1[2], $ar1[1], $ar1[0]);
   
   $ar2=explode('-',$_REQUEST['TODATE']);
   if (count($ar2)<3) { $ar2=array('01', '01', '2000'); }
   $todate = date('Ymd', mktime(0,0,0, $ar2[1], $ar2[0]+1, $ar2[2]) );
   
   $wstr = $bsales?"(T2.DOCID >= -1 AND T2.DOCID < 750)":"(T2.DOCID < -1 OR T2.DOCID >= 750)";
   
   $data=array('FROMDATE'=>$fromdate, 'TODATE'=>$todate);
   if (!empty($_REQUEST['AFM'])) {
      $query="SELECT CURCODE, COUNT(*), 
         SUM(NETVALA), SUM(NETVALB), SUM(NETVALC), SUM(NETVALD), SUM(NETVALE),
         SUM(VATVALA), SUM(VATVALB), SUM(VATVALC), SUM(VATVALD), SUM(GTOTAL),
         SUM(PARAKRATISI_FOROU) 
         FROM ese_vatno T0
         LEFT JOIN ese_z T1 ON (T1.EAFDSS=T0.EAFDSS)
         LEFT JOIN ese_esi T2 ON (T2.EAFDSS=T1.EAFDSS AND T2.ZNR=T1.ZNR)
         WHERE T0.VATNO=:VATNO AND EID IS NOT NULL AND $wstr AND HMERA >= :FROMDATE AND HMERA < :TODATE ";
      $data['VATNO'] = $_REQUEST['AFM'];
   }
   else {
      $query="SELECT CURCODE, COUNT(*), 
         SUM(NETVALA), SUM(NETVALB), SUM(NETVALC), SUM(NETVALD), SUM(NETVALE),
         SUM(VATVALA), SUM(VATVALB), SUM(VATVALC), SUM(VATVALD), SUM(GTOTAL), 
         SUM(PARAKRATISI_FOROU) FROM ese_z T1
         LEFT JOIN ese_esi T2 ON (T2.EAFDSS=T1.EAFDSS AND T2.ZNR=T1.ZNR)
         WHERE EID IS NOT NULL AND $wstr AND HMERA >= :FROMDATE AND HMERA < :TODATE ";
   }
   if (!empty($_REQUEST['EAFDSS'])) {
      $query .= " AND T1.EAFDSS=:EAFDSS ";
      $data['EAFDSS'] = gr_to_eng($_REQUEST['EAFDSS']);
   }
   if ($_REQUEST['WOVAT']==1) {
      $query .= "AND T2.PARAKRATISI_FOROU<>0 ";
   }
   else if ($_REQUEST['WOVAT']==2) {
      $query .= "AND (T2.PARAKRATISI_FOROU IS NULL OR T2.PARAKRATISI_FOROU=0) ";
   }
   $query .= " GROUP BY CURCODE ORDER BY CURCODE";
   $db->SetFetchMode(ADODB_FETCH_NUM);                      
   if (($rs=$db->Execute($query,$data))===false) {           
      uerror( __LINE__.$db->ErrorMsg() );
   }
   return $rs; 
}
//--------------------------------------
function do_report()
{
   global $x2;
   $db=&$x2->db;
   
   $wovat=array('ΟΛΑ', 'ΝΑΙ', 'ΟΧΙ');
   
   echo "<h1>Report ΦΠΑ από ".myhtml($_REQUEST['FROMDATE'])." ως ".myhtml($_REQUEST['TODATE'])." για τον ΑΦΜ ".
      (empty($_REQUEST['AFM'])?"(οτιδήποτε)":myhtml($_REQUEST['AFM']))." και τον ΦΗΜ ".
      (empty($_REQUEST['EAFDSS'])?"(οτιδήποτε)":myhtml($_REQUEST['EAFDSS']))." Απαλασσόμενα από ΦΠΑ: ".
      $wovat[$_REQUEST['WOVAT']]."</h1>";
   
   $gr1=new cXRID('grid7');
   
   array_push( $gr1->cols,
		array( 'Κατηγορία', 80),
      array( 'Νόμισμα', 80),
      array( 'Εγγραφές', 80),
      array( 'Καθαρή αξία Α', 80, 'right'),
      array( 'Καθαρή αξία Β', 80, 'right'),
      array( 'Καθαρή αξία Γ', 80, 'right'),
      array( 'Καθαρή αξία Δ', 80, 'right'),
      array( 'Καθαρή αξία Ε', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Συνολική αξία', 80, 'right'),
      array( 'Παρακράτηση φόρου', 80, 'right')
      );
      
   if (($rs=query_esi_vat(true/* sales */))!==false) { 
      while ($row=$rs->FetchRow()) {
         array_unshift($row, 'ΠΩΛΗΣΕΙΣ');
         $gr1->rows[] = $row;
      }
      $rs->Close();
   }
   
   if (($rs=query_esi_vat(false/* purchases */))!==false) {
      while ($row=$rs->FetchRow()) {
         array_unshift($row, 'ΑΓΟΡΕΣ'); 
         $gr1->rows[] = $row;
      }
      $rs->Close();
   }
   
   $gr1->play();

   echo "<div id=tbar2><b>
      <a href=\"javascript:goTo(170)\">Νέο ερώτημα</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";   
}
//--------------------------------------
class cFHM
{
   public $letter;
   public $tlt_code;
   public $init_sn;
   public $final_sn;
   public $eafdss_y_n=0;

   function check()
   {
      global $x2;
      $db=&$x2->db;

      $this->tlt_code = trim($_REQUEST['tlt_code']);
      $ftm1 = trim($_REQUEST['ftm1']);
      $ftm2= trim($_REQUEST['ftm2']);

      $repeat_msg = "TA SERIAL NUMBERS ΔΕΝ ΣΥΜΦΩΝΟΥΝ, ΕΠΑΝΑΛΑΒΕΤΕ!";

      if (mb_strlen($ftm1) == 10 ) {
         $this->letter=mb_substr($ftm1,0,2);
         if (mb_strlen($ftm2)!=10 || $this->letter!==mb_substr($ftm2,0,2)) {
            uerror($repeat_msg);
            return false;
         }
         $this->init_sn = mb_substr($ftm1,2);
         $this->final_sn = mb_substr($ftm2,2);
      }
      else if (mb_strlen($ftm1) == 11 ) {
         $this->letter=mb_substr($ftm1,0,3);
         if (mb_strlen($ftm2)!=11 || $this->letter!==mb_substr($ftm2,0,3)) {
            uerror($repeat_msg);
            return false;
         }
         $this->init_sn = mb_substr($ftm1,3);
         $this->final_sn = mb_substr($ftm2,3);
      }
      else {
         uerror("Λάθος μήκους πρώτου σειριακού!");
         return false;
      }
      $this->init_sn = str_pad($this->init_sn, 8, "0", STR_PAD_LEFT);
      $this->final_sn = str_pad($this->final_sn, 8, "0", STR_PAD_LEFT);

      if ( $this->init_sn < 00000001 || $this->init_sn > 99999999 ) {
         uerror("Λάθος αριθμός πρώτου σειριακού!");
         return false;
      }

      if ( $this->final_sn < 00000001 || $this->final_sn > 99999999 || $this->final_sn < $this->init_sn) {
         uerror("Λάθος αριθμός τελευταίου σειριακού!");
      }

      /* ευρεση του ΑΦΜ της επιχείρησης που έχει την αρχική άδεια καταλληλότητας  ως real_afm */
      $fhmtype=0;
      $how_many=0;
      $query="SELECT * FROM TABLE(tameiakes.queries.vres_realafm_apprdate_fhmtype(:TLT_CODE, :LETTER))";
      $stmt = $db->Prepare($query); // no error check
      $data=array('TLT_CODE'=>$this->tlt_code, 'LETTER'=>$this->letter);
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
      while ($row = $rs->FetchRow())
      {
         $real_afm = $row[0];
         $approval_date = $row[1];
         $fhmtype = (int)$row[2];
         $how_many++;
      }
      $rs->Close();
      if ($how_many!=1) {
         uerror("ΛΑΘΟΣ ΑΦΜ ή SERIAL NUMBER ή ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ. ΕΠΑΝΑΛΑΒΕΤΕ!");
         return false;
      }

     if (substr($real_afm."         ",0,9) !== substr($_SESSION['USERAFM']."       ",0,9) ) { // mavridis 25-8-17: ο Λεμπέσης αναφέρει λάθος. Να αλλάξει με την χρήση του strncomp 
         uerror("Δεν έχετε την άδεια καταλληλότητας αυτού του τύπου ΦΗΜ. Η επιθεώρηση δεν επιτρέπεται");
         return false;
      }

      // o.k.
      $this->eafdss_y_n = ($fhmtype==5?1:0);
      // εχω διασφαλίσει ότι τα serial number ξεκινάνε από σωστά νούμερα και
      // ότι το ΑΦΜ είναι το σωστό και ότι ο αριθμός έγκρισης είναι ο σωστός
      return true;
   }
}
//--------------------------------------

//--------------------------------------
class ccFHM /* kaleitai gia epitheorisi sfragisis */ 
{
   public $letter;
   public $tlt_code;
   public $init_sn;
   public $final_sn;
   public $eafdss_y_n=0;

   function check()
   {
      global $x2;
      $db=&$x2->db;

      $this->tlt_code = trim($_REQUEST['tlt_code']);
      $ftm1 = trim($_REQUEST['ftm1']);
      $ftm2= trim($_REQUEST['ftm2']);

      $repeat_msg = "TA SERIAL NUMBERS ΔΕΝ ΣΥΜΦΩΝΟΥΝ, ΕΠΑΝΑΛΑΒΕΤΕ!";

      if (mb_strlen($ftm1) == 10 ) {
         $this->letter=mb_substr($ftm1,0,2);
         if (mb_strlen($ftm2)!=10 || $this->letter!==mb_substr($ftm2,0,2)) {
            uerror($repeat_msg);
            return false;
         }
         $this->init_sn = mb_substr($ftm1,2);
         $this->final_sn = mb_substr($ftm2,2);
      }
      else if (mb_strlen($ftm1) == 11 ) {
         $this->letter=mb_substr($ftm1,0,3);
         if (mb_strlen($ftm2)!=11 || $this->letter!==mb_substr($ftm2,0,3)) {
            uerror($repeat_msg);
            return false;
         }
         $this->init_sn = mb_substr($ftm1,3);
         $this->final_sn = mb_substr($ftm2,3);
      }
      else {
         uerror("Λάθος μήκους πρώτου σειριακού!");
         return false;
      }
      $this->init_sn = str_pad($this->init_sn, 8, "0", STR_PAD_LEFT);
      $this->final_sn = str_pad($this->final_sn, 8, "0", STR_PAD_LEFT);

      if ( $this->init_sn < '00000001' || $this->init_sn > '99999999' ) {
         uerror("Λάθος αριθμός πρώτου σειριακού!");
         return false;
      }

      if ( $this->final_sn < '00000001' || $this->final_sn > '99999999' || $this->final_sn < $this->init_sn) {
         uerror("Λάθος αριθμός τελευταίου σειριακού!");
      }

      /* ευρεση του ΑΦΜ της επιχείρησης που έχει την αρχική άδεια καταλληλότητας  ως real_afm */
      $fhmtype=0;
      $how_many=0;
      $query="SELECT * FROM TABLE(tameiakes.queries.vres_realafm_apprdate_fhmtype(:TLT_CODE, :LETTER))";
      $stmt = $db->Prepare($query); // no error check
      $data=array('TLT_CODE'=>$this->tlt_code, 'LETTER'=>$this->letter);
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
      while ($row = $rs->FetchRow())
      {
         $real_afm = $row[0];
         $approval_date = $row[1];
         $fhmtype = (int)$row[2];
         $how_many++;
      }
      $rs->Close();
      if ($how_many!=1) {
         uerror("ΛΑΘΟΣ ΑΦΜ ή SERIAL NUMBER ή ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ. ΕΠΑΝΑΛΑΒΕΤΕ!");
         return false;
      }

      
      /* εύρεση του ΑΦΜ της επιχείρησης που έχει το service ως service_afm */
      $service_afm="000000000";
      $how_many=0;
      $query="SELECT SERVICE_AFM FROM ESE_SERVICE WHERE tltcode=:TLTCODE";
      $stmt=$db->Prepare($query);
      $data=array('TLTCODE'=>$this->tlt_code);
      
      if (($rs=$db->Execute($stmt,$data))===false) {          uerror( __LINE__.$db->ErrorMsg() );          return false;       }
      while ($row = $rs->FetchRow())
      {  $service_afm = $row[0];    $how_many++; }
      $rs->Close();
      if ($how_many!=1) {
         uerror("Υπάρχει λάθος στον ΑΦΜ της επιχείρησης που έχει το service");
         return false;
      }    
          
 
      if ((substr($real_afm."         ",0,9) !== substr($_SESSION['USERAFM']."       ",0,9) ) and  
      (substr($service_afm."         ",0,9) !== substr($_SESSION['USERAFM']."       ",0,9) ) )
      { // mavridis
         uerror("Δεν έχετε την άδεια καταλληλότητας αυτού του τύπου ΦΗΜ");
         return false;
      }
      
      // o.k.
      $this->eafdss_y_n = ($fhmtype==5?1:0);
      // εχω διασφαλίσει ότι τα serial number ξεκινάνε από σωστά νούμερα και
      // ότι το ΑΦΜ είναι το σωστό και ότι ο αριθμός έγκρισης είναι ο σωστός
      return true;
   }
}
//--------------------------------------





//--------------------------------------
class one_FHM
{
   public $letter;
   public $tlt_code;
   public $sn;
   public $eafdss_y_n=0;
   
   function one_check()
   {
      global $x2;
      $db=&$x2->db;

      $this->tlt_code = trim($_REQUEST['tlt_code']);
      $ftm1= trim($_REQUEST['ftm']);
      

      if (mb_strlen($ftm1) == 10 ) {
         $this->letter=mb_substr($ftm1,0,2);
         $this->sn = mb_substr($ftm1,2);         
      }
      else if (mb_strlen($ftm1) == 11 ) {
         $this->letter=mb_substr($ftm1,0,3);
         $this->sn = mb_substr($ftm1,3);         
      }
      else {
         uerror("Λάθος μήκους σειριακού!");
         return false;
      }
      $this->sn = str_pad($this->sn, 8, "0", STR_PAD_LEFT);

      if ( $this->sn < '00000001' || $this->sn > '99999999' ) {
         uerror("Λάθος αριθμός σειριακού!");
         return false;
      }
      
      
      /* ευρεση του ΑΦΜ της επιχείρησης που έχει την αρχική άδεια καταλληλότητας  ως real_afm */
      $query="SELECT * FROM TABLE(tameiakes.queries.vres_realafm_apprdate_fhmtype(:TLT_CODE, :LETTER))";
      $stmt = $db->Prepare($query); // no error check
      $data=array('TLT_CODE'=>$this->tlt_code, 'LETTER'=>$this->letter);
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
      $fhmtype=0;
      $how_many=0;
      while ($row = $rs->FetchRow())
      {
         $real_afm = $row[0];
         $approval_date = $row[1];
         $fhmtype = (int)$row[2];
         $how_many++;
      }
      $rs->Close();
      if ($how_many!=1) {
         uerror("ΛΑΘΟΣ SERIAL NUMBER ή ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ. ΕΠΑΝΑΛΑΒΕΤΕ!");
         return false;
      }
      
      /* εύρεση του ΑΦΜ της επιχείρησης που έχει το service ως service_afm */
      $service_afm="000000000";
      $how_many=0;
      // $query="SELECT SERVICE_AFM FROM ESE_SERVICE WHERE TRIM(GR)=:GR1";
      $query="SELECT SERVICE_AFM FROM ESE_SERVICE WHERE tltcode=:TLTCODE";
      $stmt=$db->Prepare($query);
      //$data=array('GR1'=>$this->letter);
      $data=array('TLTCODE'=>$this->tlt_code);
       if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
      while ($row = $rs->FetchRow())
      {
         $service_afm = $row[0];
         $how_many++;
      }
      $rs->Close();
      if ($how_many!=1) {
         uerror("Υπάρχει λάθος στον ΑΦΜ της επιχείρησης που έχει το service");
         return false;
      }
      
      /*$row = $rs->FetchRow();
      $rs->Close();
      
      
      if ($row==false) 
      { uerror("Δεν έχετε το service αυτού του τύπου ΦΗΜ.");
         return false;} 
      $service_afm = $row[0]; */
      /* uerror("SERVICE AFM:".$service_afm); */
      
           
      if ((substr($real_afm."         ",0,9) !== substr($_SESSION['USERAFM']."       ",0,9) ) and  
      (substr($service_afm."         ",0,9) !== substr($_SESSION['USERAFM']."       ",0,9) ) )
      { // mavridis
         uerror("Δεν έχετε την άδεια καταλληλότητας του ΦΗΜ");
         return false;
      }

      // o.k.
      $this->eafdss_y_n = ($fhmtype==5?1:0);
      // εχω διασφαλίσει ότι τα serial number ξεκινάνε από σωστά νούμερα και
      // ότι το ΑΦΜ είναι το σωστό και ότι ο αριθμός έγκρισης είναι ο σωστός
      return true;
   }
}
//--------------------------------------
function query_serials()
{
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   echo "<h1>Επιθεώρηση σφράγισης παρτίδας ΦΗΜ στο taxis. ΑΜ από.... έως....</h1>";

   $prof=new cPROFILER1();

   $fhm = new cFHM();
   if (!$fhm->check()) {
      return after_login();
   }
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";

   $gr1=new cXRID('grid19');

   array_push( $gr1->cols,
		array( 'α/α', 80),
      array( 'Serial', 80),
      array( 'Ημερομηνία', 120),
      array( 'Κωδικός έναρξης & ΑΦΜ Κατόχου', 150)
      );

   $how_many=1;
   $serial_number1 = $fhm->letter.$fhm->init_sn;
   $serial_number2 = $fhm->letter.$fhm->final_sn;
   $date16="01/01/1900";
   $enarji='0';
   $afm_kat='';
   $vres_1_3_16_fromto="select * from table(tameiakes.queries.vres_1_3_16_fromto(:serial_number1, :serial_number2))";
   $stmt = $db->Prepare($vres_1_3_16_fromto);
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   $data=array('serial_number1'=>$serial_number1, 'serial_number2'=>$serial_number2);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   while ($row = $rs->FetchRow())
   {
      $r2=array($how_many, $row[2]);
      $r2[]=$row[0]; // Ημερομηνία

      $enarji=$row[1];
      $val=$enarji;
      if ($enarji==1) {
         $val .= " αγορά                - ";
      }
      else if ($enarji==3) {
         $val .= " αντικατάσταση μνήμης - ";
      }
      else if ($enarji==16 or $enarji==17) {
         $val .= " σφράγιση             - ";
      }
      $afm_kat=$row[3];
      $val .=$afm_kat;
      $r2[]=$val;

      $gr1->rows[]=$r2;
      $how_many++;
   }
   $rs->Close();

   $gr1->play();

   echo "<div id=tbar2><b>
      <a href=\"javascript:goTo(43)\">Νέο ερώτημα</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";
}
//--------------------------------------
function insert_sfragisi()
{
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   $prof=new cPROFILER1();

   $fhm = new cFHM();
   if (!$fhm->check()) {
      return after_login();
   }

   $ddmmyyyy = strtr($_REQUEST['ddmmyyyy'], '-', '/');
   $transdate=date('d/m/Y');

   $currdoy='0000';
   $how_many=0;
   $vres_currdoy_registdate="SELECT * FROM TABLE(tameiakes.queries.vres_currdoy_registdate(:AFM))";
   $stmt=$db->Prepare($vres_currdoy_registdate);
   $data=array('AFM'=>$_SESSION['USERAFM']);
   if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   while ($row = $rs->FetchRow())
   {
      $currdoy = $row[0];
      $registdate = $row[1];
      $how_many++;
   }
   $rs->Close();
   $currdoy=substr($currdoy."        ",0,4);
   if ($currdoy=='0000') {
      uerror("Λάθος ΑΦΜ επιχείρησης ή η ΔΟΥ δεν είναι η σωστή");
      return after_login();
   }

/* mavridis code 15-10-2015 */
   $how_many_16=0;
   $how_many_1_previous_date=0;
   $serial_number1 = $fhm->letter.$fhm->init_sn;
   $serial_number2 = $fhm->letter.$fhm->final_sn;
   $date16="01/01/1900";
   $enarji='0';
   $vres_1_3_16_fromto="select * from table(tameiakes.queries.vres_1_3_16_fromto(:serial_number1, :serial_number2))";
   $stmt = $db->Prepare($vres_1_3_16_fromto);
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   $data=array('serial_number1'=>$serial_number1, 'serial_number2'=>$serial_number2);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   while ($row = $rs->FetchRow())
   {
       /* αρχικοποίηση */        
      $date16="01/01/1900"; 
      $enarji='0';
      $ser_num='000000000000';
      
      $r2=array($how_many, $row[2]);
      $r2[]=$row[0]; // Ημερομηνία

      $enarji=$row[1];
      $val=$enarji;
      if ($enarji==1) {
         $val .= " αγορά";
      }
      else if ($enarji==3) {
         $val .= " αντικατάσταση μνήμης";
      }
      else if ($enarji==16 or $enarji==17) {
         $val .= " σφράγιση";
      }
      $r2[]=$val;
      
      $ser_num=$row[2];
      $date16= $row[0];
      
      /* έλεγχοι με βάση αυτά που επιστράφηκαν */
      if ($enarji==16 or $enarji==17) {$how_many_16++;}
      /* μετατροπή της ημερομηνίας σε μορφή yyyymmdd */
      $date16_=substr($date16,6,4).substr($date16,3,2).substr($date16,0,2);
      $yyyymmdd=substr($ddmmyyyy,6,4).substr($ddmmyyyy,3,2).substr($ddmmyyyy,0,2);
      if (($enarji==1 or $enarji==3)  and ($date16_  < $yyyymmdd)) {$how_many_1_previous_date++;}
   
      

      /* $gr1->rows[]=$r2; */
      $how_many++;
   }
   if ($how_many_16 > 0) { uerror( "Υπάρχουν ήδη ".$how_many_16." καταχωρημένες σφραγίσεις για αυτή την παρτίδα. Επιθεωρήστε τη.");
         return after_login();  }
   if ($how_many_1_previous_date > 0) { uerror("Υπάρχουν ήδη ".$how_many_1_previous_date." καταχωρημένες πωλήσεις με προγενέστερη ημερομηνία για αυτή την παρτίδα. Επιθεωρήστε τη.");
         return after_login(); }
 
/* end mavridis code 15-10-2015 */





   // Ολοι οι έλεγχοι έγιναν σωστά, το σύστημα είναι έτοιμο να καταχωρήσει ολόκληρη την παρτίδα
   $updated=array();
   //$userid=$real_afm;
   $userid="S";
   $year=substr($ddmmyyyy,6,4);
   $stamp=substr($fhm->init_sn,2,6);

   $db->StartTrans();

   
/* mavridis code για εισαγωγή πολλών σφραγίσεων */
    $serial_num1 = $fhm->init_sn;
    $serial_num2 = $fhm->final_sn;
    $lettr       =$fhm->letter;
    $rrafm=$_SESSION['USERAFM'];
    $insert_polles_fhm= "call queries.insert_polles_sfragisis(:currdoy, :year, :ddmmyyyy, 
         :lett,:serial_num1, :serial_num2, :real_afm, :registdate, :stamp, :tlt_code, :transdate,
         :userid, :eafdss_y_n)";
    $stmt=$db->Prepare($insert_polles_fhm);
    $data23=array('currdoy'=>$currdoy, 'year'=>$year, 'ddmmyyyy'=>$ddmmyyyy, 
         'lett'=>$lettr,'serial_num1'=>$serial_num1,'serial_num2'=>$serial_num2, 
         'real_afm'=>$rrafm,
         'registdate'=>$registdate, 'stamp'=>$stamp, 'tlt_code'=>$fhm->tlt_code,
         'transdate'=>$transdate, 'userid'=>$rrafm, 'eafdss_y_n'=>$fhm->eafdss_y_n);
    if (!$db->Execute($stmt, $data23)) 
    { uerror(__LINE__.$db->ErrorMsg()." lett=#".$lettr."# num1:".$serial_num1."# num2:".$serial_num2); return after_login();  }
    /* mavridis code end */


    if (!$db->HasFailedTrans()) {
      echo "<div>";       
      echo "H σφράγιση της παρτίδας από ".$lettr.$serial_num1. " έως και ". $lettr.$serial_num2. " καταχωρήθηκε με ημερομηνία ".$ddmmyyyy."<br>";
      echo "</div>"; 
   }
   else {
      uerror("Δεν καταχωρήθηκε καμμία σφράγιση!");
   }

$db->CompleteTrans();


?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();
}
//--------------------------------------
function ask_for_serials()
{
   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ</h1>
<h3>Επιθεώρηση σφράγισης παρτίδας ΦΗΜ στο taxis. ΑΜ από.... έως....</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="44">
<table>
<tr>
   <td>Αριθμός έγκρισης ΦΗΜ</td>
   <td><input type=number name="tlt_code" maxlength=10 autofocus></td>
</tr>
<tr>
   <td>Πρώτο s/n (με τα γράμματα) </td>
   <td><input type=text name="ftm1" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td>Τελευταίο s/n (με τα γράμματα) </td>
   <td><input type=text name="ftm2" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ερώτηση">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------
function ask_for_sfragisi()
{
   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<script>
$(function() {
    $( document.goForm.ddmmyyyy ).datepicker();
  });
</script>
<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ</h1>
<h3>Εισαγωγή σφράγισης παρτίδας ΦΗΜ ή ΑΔΗΜΕ ταξιμέτρων στο taxis. ΑΜ από.... έως....</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="46">
<table>
<tr>
   <td> Αριθμός έγκρισης ΦΗΜ: </td>
   <td><input type=number name="tlt_code" maxlength=10 autofocus></td>
</tr>
<tr>
   <td>Πρώτο s/n (με τα γράμματα) </td>
   <td><input type="text" name="ftm1" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td>Τελευταίο s/n (με τα γράμματα) </td>
   <td><input type="text" name="ftm2" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td>Hμερομηνία</td>
   <td><input type="text" name="ddmmyyyy" value="<?php echo date('d-m-Y'); ?>"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------

function ask_for_vlavi()
{
//49
   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<script>
$(function() {
    $( document.goForm.report_date ).datepicker();
  });
</script>
<script>
$(function() {
    $( document.goForm.z_date ).datepicker();
  });
</script>

<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ</h1>
<h3>Παύση ΦΗΜ λόγω βλάβης φορολογικής μνήμης (κωδικός 25)</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="50">
<table>
<tr>
<td> Ημ/νία έκδοσης τεχνικής αναφοράς: </td>
<td align="left"><input type="text" name="report_date" value="<?php echo date('d-m-Y'); ?>"></td>
<td> ΑΦΜ κατόχου ΦΗΜ: </td>
<td align="left"><input type="text" name="afm_own" size="9" maxlength="20"></td>
</tr>
<tr>
<td> Αριθμός Μητρώου ΦΗΜ: </td>
<td align="left"><input type="text" name="ftm" id="ftm" maxlength="20" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
<td> Αριθμός έγκρισης ΦΗΜ: </td>
<td align="left"><input type="number" name="tlt_code"  step="1" min="1" size="10" maxlength="20"></td>
</tr>
<tr>
<td> Αριθμός τελευταίου Ζ: </td>
<td align="left"><input type="number" name="z_num" step="1" min="1" size="10" maxlength="20"></td>
<td> Ημ/νία τελευταίου Ζ: </td>
<td align="left"><input type="text" name="z_date" value="<?php echo date('d-m-Y'); ?>"></td>
</tr>
<tr>
<td> ΑΦΜ εταιρείας του τεχνικού: </td>
<td align="left"><input type="text" name="afm_et_texn" size="9" maxlength="20"></td>
<td> ΑΦΜ Τεχνικού: </td>
<td align="left"><input type="text" name="afm_texn" size="9" maxlength="20"></td>
</tr>
<tr>
<td> Επώνυμο τεχνικού: </td>
<td align="left"><input type="text" name="lname_texn" size="25" maxlength="25"></td>
<td> Ονομα τεχνικού: </td>
<td align="left"><input type="text" name="fname_texn" size="15" maxlength="20"></td>
</tr>
<tr>
<td> <i> <u> ΣΤΟΙΧΕΙΑ ΜΝΗΜΗΣ ΤΑΜΕΙΑΚΗΣ ΜΗΧΑΝΗΣ (προοδευτικά ποσά)</td> 
</tr>
<tr>
<td> Ποσό τζίρου υπαγόμενου σε ΦΠΑ: </td>
<td align="left"><input type="number" name="tziros_fpa"  step="0.01" min="0" size="14" maxlength="20"></td>
<td> Ποσό τζίρου μηδενικού συντ.ΦΠΑ: </td>
<td align="left"><input type="number" name="tziros_fpa0" step="0.01" min="0" size="14" maxlength="20"></td>
</tr>
<tr>
<td> Αξία ΦΠΑ συντελεστή Α: </td>
<td align="left"><input type="number" name="axia_fpaa"   step="0.01" min="0" size="14" maxlength="20"></td>
<td> Αξία ΦΠΑ συντελεστή Β: </td>
<td align="left"><input type="number" name="axia_fpab"   step="0.01" min="0" size="14" maxlength="20"></td>
</tr>
<tr>
<td> Αξία ΦΠΑ συντελεστή Γ: </td>
<td align="left"><input type="number" name="axia_fpac"  step="0.01" min="0" size="14" maxlength="20"></td>
<td> Αξία ΦΠΑ συντελεστή Δ: </td>
<td align="left"><input type="number" name="axia_fpad"  step="0.01" min="0" size="14" maxlength="20"></td>
</tr>
<tr>
<td> <i> <u> ΣΤΟΙΧΕΙΑ ΕΑΦΔΣΣ </td> 
</tr>
<tr>
<td> ΠΑΗΨΣ τελευταιου Ζ: </td>
<td align="left"><input type="text" name="z_hex" size="41" maxlength="41"></td>
</tr>
<tr>   
   <td>Περιγραφή βλάβης:</td>
   <td><select name="perigrafi">
          <option value="1">1.Αδυναμία ανάγνωσης φορολογικής μνήμης</option>
          <option value="2">2.Αδυναμία εγγραφής και ανάγνωσης φορολογικής μνήμης</option>
          <option value="3">3.Αδυναμία εγγραφής σε μη πληρωθείσα φορολογική μνήμη</option>
          <option value="4">4.Αδυναμία εγγραφής σωστής ημ/νίας στη φορολογική μνήμη</option>
          <option value="5">5.Έχει ήδη καταχωρηθεί λάθος ημ/νία στη φορολογική μνήμη</option>
          <option value="6">6.Έχουν δημιουργηθεί αδόκιμα δεδομένα στη φορολογική μνήμη</option>
      </select></td>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------


function ask_for_serials_vlavi()
{
   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<h2>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ E &apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ </h2>
<h3>Επιθεώρηση τεχνικών αναφορών βλάβης ΦΗΜ. ΑΜ από.... έως....</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="52">
<table>
<tr>
   <td>Αριθμός έγκρισης ΦΗΜ</td>
   <td><input type=number name="tlt_code" maxlength=10 autofocus></td>
</tr>
<tr>
   <td>Πρώτο s/n (με τα γράμματα) </td>
   <td><input type=text name="ftm1" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td>Τελευταίο s/n (με τα γράμματα) </td>
   <td><input type=text name="ftm2" maxlength="11" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ερώτηση">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------
function insert_vlavi()
{  
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   $prof=new cPROFILER1();

   $fhmv = new one_FHM();
   if (!$fhmv->one_check()) {
      return after_login();
   }

   //ΑΦΜ και User_id από LDAP 
   $afm_man = trim($_SESSION['USERAFM']);
   $user_id_man = "esend".$afm_man ; 
   $afm_man = substr($afm_man."                 ",0,12);
   
   $z_date = strtr($_REQUEST['z_date'], '-', '/');
   $z_date=trim($z_date);
   $transdate=date('d/m/Y');

   $currdoy='0000';
   $how_many=0;
   $vres_currdoy_registdate="SELECT * FROM TABLE(tameiakes.queries.vres_currdoy_registdate(:AFM))";
   $stmt=$db->Prepare($vres_currdoy_registdate);
   $data=array('AFM'=>$afm_man);
   if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   while ($row = $rs->FetchRow())
   {
      $currdoy = $row[0];
      $registdate = $row[1];
      $how_many++;
   }
   $rs->Close();
   $currdoy=substr($currdoy."        ",0,4);
   if ($currdoy=='0000') {
      uerror("Η καταχωρημένη δεν αντιστοιχεί στη πραγματική ΔΟΥ της κατασκευάστριας εταιρείας");
      return after_login();
   }
   
// 25_pausi start

$report_date =  strtr($_REQUEST['report_date'], '-', '/'); 
$report_date=trim($report_date);
$afm_own = trim($_REQUEST['afm_own']); $afm_own = trim ($afm_own); $afm_own=substr($afm_own."                     ",0,12);
$z_num = trim($_REQUEST['z_num']); $z_num=(int)$z_num;
$afm_texn = trim($_REQUEST['afm_texn']); $afm_texn=substr($afm_texn."                      ",0,12);
$lname_texn = trim($_REQUEST['lname_texn']);
$fname_texn = trim($_REQUEST['fname_texn']);
$afm_et_texn =trim($_REQUEST['afm_et_texn']); $afm_et_texn=substr($afm_et_texn."                      ",0,12);
$tziros_fpa = trim($_REQUEST['tziros_fpa']); $tziros_fpa=(float)$tziros_fpa;
$tziros_fpa0 = trim($_REQUEST['tziros_fpa0']);$tziros_fpa0=(float)$tziros_fpa0;
$axia_fpaa = trim($_REQUEST['axia_fpaa']); $axia_fpaa=(float)$axia_fpaa;
$axia_fpab = trim($_REQUEST['axia_fpab']); $axia_fpab=(float)$axia_fpab;
$axia_fpac = trim($_REQUEST['axia_fpac']); $axia_fpac=(float)$axia_fpac;
$axia_fpad = trim($_REQUEST['axia_fpad']); $axia_fpad=(float)$axia_fpad;
$z_hex = trim($_REQUEST['z_hex']); 
$perigrafi = trim($_REQUEST['perigrafi']);
$pausi = 25;
$ftm=$fhmv->letter.$fhmv->sn;


$subm_date = date("d/m/Y");  $subm_date=trim($subm_date);

//έλεγχος ορθότητας ημερομηνίας ok
if (strlen($report_date) <> 10 or substr($report_date,0,2) < '01' or substr($report_date,0,2)>'31' or substr($report_date,3,2)<'01' 
or substr($report_date,3,2)>'12' or substr($report_date,6,4)<'2000') 
{uerror("Λάθος ημερομηνία έκδοσης τεχνικής αναφοράς");return after_login();} 

//έλεγχος 10ημέρου ok
$yyyy1=substr($subm_date,6,4); $mm1=substr($subm_date,3,2); $dd1=substr($subm_date,0,2);
$jd1=juliantojd($mm1,$dd1,$yyyy1); 
$yyyy2=substr($report_date,6,4); $mm2=substr($report_date,3,2); $dd2=substr($report_date,0,2);
$jd2=juliantojd($mm2,$dd2,$yyyy2); 
$diaf=$jd1-$jd2;
if ($diaf>10) {uerror("Η δήλωση είναι εκπρόθεσμη"); return after_login();} 

//έλεγχος ορθότητας ημερομηνίας z ok
if (strlen($z_date) <> 10 or substr($z_date,0,2) < '01' or substr($z_date,0,2)>'31' or substr($z_date,3,2)<'01' 
or substr($z_date,3,2)>'12' or substr($z_date,6,4)<'2000') 
{uerror("Λάθος ημερομηνία τελευταίου Ζ");return after_login();} 

//έλεγχος ημερομηνίας Ζ για παρέλευση εξαμήνου ok
$yyyy3=substr($subm_date,6,4); $mm3=substr($subm_date,3,2); $dd3=substr($subm_date,0,2);
$jd3=juliantojd($mm3,$dd3,$yyyy3);
$yyyy4=substr($z_date,6,4); $mm4=substr($z_date,3,2); $dd4=substr($z_date,0,2);
$jd4=juliantojd($mm4,$dd4,$yyyy4);
$diaf2=$jd3-$jd4;
if ($diaf2>180) {uerror("Εχει παρέλθει εξάμηνο από την έκδοση τελευταίου Ζ! Η δήλωση πρέπει να κατατεθεί στην αρμόδια ΔΟΥ από τον επιτηδευματία.");return after_login();} 

/* εύρεση ΑΦΜ κατόχου,Αριθμου εγκρισης,start_code,start_date  */

$find_afm_ar_egkrisis="select * from table(tameiakes.queries.vres_afm_tltcode_date_code(:FTM))";

$real_afm_own="000000000";
$how_many=0;
$start_code=0;
$start_date=$subm_date;
$ar_egkrisis=0;

$stmt=$db->Prepare($find_afm_ar_egkrisis);
$data=array('FTM'=>$fhmv->letter.$fhmv->sn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

   while ($row = $rs->FetchRow())
   {
      $real_afm_own = $row[0];$real_afm_own=substr($real_afm_own."               ",0,12);
      $ar_egkrisis = $row[1];
      $start_code = $row[2];
      $start_date = $row[3];
      $how_many++;
   }
   $rs->Close();

if ($how_many >1) { uerror("Η ΕΝΕΡΓΕΙΑ ΔΕΝ ΜΠΟΡΕΙ ΝΑ ΟΛΟΚΛΗΡΩΘΕΙ (ΥΠΑΡΧΟΥΝ ΛΑΘΟΣ ΕΓΓΡΑΦΕΣ). ΕΠΙΚΟΙΝΩΝΗΣΤΕ ΜΕ ΤΟ 213-1621133");return after_login();}
if ($how_many==0) { uerror("Ο ΦΗΜ ΕΙΤΕ ΕΙΝΑΙ ΣΕ ΠΑΥΣΗ, ΕΙΤΕ ΕΙΝΑΙ ΑΔΗΛΩΤΟΣ"); return after_login();}
$real_afm_own = trim($real_afm_own);
$ar_egkrisis=(int)$ar_egkrisis;
if (trim($real_afm_own)!==trim($afm_own)) { uerror("ΛΑΘΟΣ ΑΦΜ ΚΑΤΟΧΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}
if ($ar_egkrisis!==(int)$fhmv->tlt_code) { uerror("ΛΑΘΟΣ ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}

//έλεγχος τεχνικού $afm_texn - $lname_texn - $fname_texn ok

$vres_real_afm_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMTEXN))";

$stmt=$db->Prepare($vres_real_afm_texn);
$data=array('AFMTEXN'=>$afm_texn);

if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
$how_many=0;
$real_afm_texn="000000000000";
$real_lname_texn="000000000000";
$real_fname_texn="000000000000";

while ($row = $rs->FetchRow())
{
    $real_afm_texn = $row[0];
    $real_lname_texn = $row[1];
    $real_fname_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_texn=trim($real_afm_texn); */
$lname_texn_3=substr($lname_texn."      ",0,3);
$fname_texn_3=substr($fname_texn."      ",0,3);
$real_lname_texn_3=substr($real_lname_texn."      ",0,3);
$real_fname_texn_3=substr($real_fname_texn."      ",0,3);
if (trim($afm_texn)!==trim($real_afm_texn) or $lname_texn_3!==$real_lname_texn_3 or $fname_texn_3!==$real_fname_texn_3)
   { uerror("ΛΑΘΟΣ ΣΤΟΙΧΕΙΑ ΤΕΧΝΙΚΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}


//έλεγχος ΑΦΜ τεχν. εταιρείας $afm_et_texn ok

$vres_real_afm_et_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMETTEXN))";
$real_afm_et_texn="000000000000";
$real_lname_et_texn="000000000000";
$real_fname_et_texn="000000000000";
$how_many=0;

$stmt=$db->Prepare($vres_real_afm_et_texn);
$data=array('AFMETTEXN'=>$afm_et_texn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

while ($row = $rs->FetchRow())
{
    $real_afm_et_texn = $row[0];
    $real_lname_et_texn = $row[1];
    $real_fname_et_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_et_texn=trim($real_afm_et_texn); */
if (trim($afm_et_texn)!==trim($real_afm_et_texn)) { uerror("ΛΑΘΟΣ ΑΦΜ ΤΕΧΝ. ΕΤΑΙΡΕΙΑΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}

//ευρεση ΔΟΥ ιδιοκτήτη

   $currdoyown='0000';
   $how_many=0;
   $vres_currdoyown="SELECT * FROM TABLE(tameiakes.queries.vres_currdoy_registdate(:AFMOWN))";
   $stmt=$db->Prepare($vres_currdoyown);
   $data=array('AFMOWN'=>$afm_own);
   if (($rs=$db->Execute($stmt, $data))===false) { uerror(__LINE__.$db->ErrorMsg()); return after_login();  }
   while ($row = $rs->FetchRow())
   {
      $currdoyown = $row[0];
      $registdate = $row[1];
      $how_many++;
   }
   $rs->Close();
   $currdoyown=substr($currdoyown."        ",0,4);
   if ($currdoyown=='0000') { uerror("Λάθος ΔΟΥ ιδιοκτήτη");       return after_login();    }

//ευρεση πρωτοκόλλου

$protocol25=0;
$how_many=0;
$vres_protocol25="SELECT * FROM TABLE(tameiakes.queries.vres_protocol)";

   $stmt=$db->Prepare($vres_protocol25);
   /* $data=array('PROT'=>$protocol25); */
   if (($rs=$db->Execute($stmt))===false) { uerror(__LINE__.$db->ErrorMsg());  return after_login(); }
   while ($row = $rs->FetchRow())
   {
      $protocol25 = $row[0];
      $how_many++;
   }
   $rs->Close();
   
   if ($protocol25==0 ) { uerror("Λάθος κατά τη δημιουργία πρωτοκόλλου"); return after_login(); }
$protocol25++;
$protocol26=$protocol25;
$db->StartTrans();


if ($fhmv->eafdss_y_n==1)  
{
$upd_entry1="call tameiakes.queries.update_pausi25_eafdss(:vftm, :vafm_owner, :vstart_code, :vstart_date,
:vstop_code, :vsubm_date,:vreport_date,  :vperigrafi,
:vtechn_afm, :vcomp_afm, :vsekt_afm,     :vuser_id,
:vz_num, :vz_date,  :vz_hex, :vprotocol, :vcurr_doy, :vyyyy)";
$stmt=$db->Prepare($upd_entry1);
$data25e=array('vftm'=>$ftm,'vafm_owner'=>$afm_own,'vstart_code'=>$start_code,'vstart_date'=>$start_date,
'vstop_code'=>$pausi, 'vsubm_date'=>$subm_date, 'vreport_date'=>$report_date, 'vperigrafi'=>$perigrafi, 
'vtechn_afm'=>$afm_texn,'vcomp_afm'=>$afm_et_texn, 'vsekt_afm'=>$afm_man,'vuser_id'=>$user_id_man,
'vz_num'=>$z_num, 'vz_date'=>$z_date, 'vz_hex'=>$z_hex, 'vprotocol'=>$protocol25, 'vcurr_doy'=>$currdoyown, 
'vyyyy'=>$yyyy2);
if (!$db->Execute($stmt, $data25e))  {       uerror(__LINE__.$db->ErrorMsg());       return after_login();   }
} 

if ($fhmv->eafdss_y_n <> 1) /* ΦΤΜ */
{
$upd_entry2="call tameiakes.queries.update_pausi25_ftm(:vftm, :vafm_owner, :vstart_code, :vstart_date,
:vstop_code, :vsubm_date,:vreport_date,  :vperigrafi,
:vtechn_afm, :vcomp_afm, :vsekt_afm,     :vuser_id,
:vz_num,     :vz_date,   :vtziros_fpa,   :vtziros_fpa0,
:vaxia_fpaa, :vaxia_fpab,:vaxia_fpac,    :vaxia_fpad, 
:vprotocol, :vcurr_doy, :vyyyy)";
$stmt=$db->Prepare($upd_entry2);
$data25f=array('vftm'=>$ftm,'vafm_owner'=>$afm_own,'vstart_code'=>$start_code,'vstart_date'=>$start_date,
'vstop_code'=>$pausi, 'vsubm_date'=>$subm_date, 'vreport_date'=>$report_date, 'vperigrafi'=>$perigrafi, 
'vtechn_afm'=>$afm_texn,'vcomp_afm'=>$afm_et_texn, 'vsekt_afm'=>$afm_man,'vuser_id'=>$user_id_man,
'vz_num'=>$z_num, 'vz_date'=>$z_date, 
'vtziros_fpa'=>$tziros_fpa, 'vtziros_fpa0'=>$tziros_fpa0,
'vaxia_fpaa'=>$axia_fpaa, 'vaxia_fpab'=>$axia_fpab,
'vaxia_fpac'=>$axia_fpac, 'vaxia_fpad'=>$axia_fpad, 
'vprotocol'=>$protocol25, 'vcurr_doy'=>$currdoyown, 
'vyyyy'=>$yyyy2); 

        
                    
if (!$db->Execute($stmt, $data25f))  { uerror(__LINE__.$db->ErrorMsg()); return after_login();   }
} 

if (!$db->HasFailedTrans()) {
      echo "<div>";       
      echo " H δήλωση της βλάβης για τoν ΦΗΜ ".$ftm. " καταχωρήθηκε επιτυχώς την ". $subm_date. " με αριθμό εγγραφής: ESE".str_pad($protocol26,8,"0",STR_PAD_LEFT)."<br>";
      echo " H δήλωση υποβλήθηκε από την επιχείρηση-κάτοχο της άδειας καταλληλότητας/τεχνικής υποστήριξης του ΦΗΜ με ΑΦΜ:".$afm_man ."<br>";
      echo " Η τεχνική αναφορά βλάβης εκδόθηκε την ".$report_date. " Ο κάτοχος του ΦΗΜ έχει ΑΦΜ:".$afm_own ."<br>";    
      echo " Επειδή δηλώθηκε η παύση του ΦΗΜ λόγω βλάβης, ο κάτοχος του ΦΗΜ δεν υποχρεούται σε περαιτέρω δήλωση παύσης αυτού.(ΠΟΛ 1068/2015)"."<br>";
      echo " Σε περίπτωση λανθασμένης υποβολής της παύσης, ο κάτοχος του ΦΗΜ πρέπει να απευθυνθεί εντός 10 ημερών στην ΔΟΥ του για την διόρθωση."."<br>"; 
      
      echo "</div>"; 
}
else {
      uerror("Δεν καταχωρήθηκε καμία βλάβη!");
}

$db->CompleteTrans();


?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();






}

//--------------------------------------


function ask_update_vlavi() // καλείται από case 53 - καλεί την case 54 ok
{

   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<script>
$(function() {
    $( document.goForm.report_date ).datepicker();
  });
</script>

<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ </h1>
<h3>Υποβολή Τεχνικής Αναφοράς Βλάβης που απεστάλη σε χάρτινη μορφή στο Τμήμα Ταμειακών Μηχανών της Δ15 - ΔΥΠΗΛΥ έως τις 31/12/2016. </h3>
<h3>Η υποβολή αυτή γίνεται μόνο μετά την δήλωση της παύσης λόγω βλάβης από τον κάτοχο του ΦΗΜ. </h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="54">
<table>
<tr>
<td> Ημ/νία έκδοσης τεχνικής αναφοράς : </td>
<td align="left"><input type="text" name="report_date" value="<?php echo date('d-m-Y'); ?>"></td>
<tr>
</tr>
<td> ΑΦΜ κατόχου ΦΗΜ : </td>
<td align="left"><input type="text" name="afm_own" size="9" maxlength="20"></td>
</tr>
<tr>
<td> Αριθμός Μητρώου ΦΗΜ : </td>
<td align="left"><input type="text" name="ftm" id="ftm" maxlength="20" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
<tr>
</tr>
<td> Αριθμός έγκρισης ΦΗΜ : </td>
<td align="left"><input type="number" name="tlt_code"  step="1" min="1" size="10" maxlength="20"></td>
</tr>
<tr>
<td> ΑΦΜ εταιρείας του τεχνικού : </td>
<td align="left"><input type="text" name="afm_et_texn" size="9" maxlength="20"></td>
<tr>
</tr>
<td> ΑΦΜ Τεχνικού : </td>
<td align="left"><input type="text" name="afm_texn" size="9" maxlength="20"></td>
</tr>
<tr>
<td> Επώνυμο τεχνικού : </td>
<td align="left"><input type="text" name="lname_texn" size="25" maxlength="25"></td>
<tr>
</tr>
<td> Ονομα τεχνικού : </td>
<td align="left"><input type="text" name="fname_texn" size="15" maxlength="20"></td>
</tr>
<tr>   
   <td>Περιγραφή βλάβης:</td>
   <td><select name="perigrafi">
          <option value="1">1.Αδυναμία ανάγνωσης φορολογικής μνήμης</option>
          <option value="2">2.Αδυναμία εγγραφής και ανάγνωσης φορολογικής μνήμης</option>
          <option value="3">3.Αδυναμία εγγραφής σε μη πληρωθείσα φορολογική μνήμη</option>
          <option value="4">4.Αδυναμία εγγραφής σωστής ημ/νίας στη φορολογική μνήμη</option>
          <option value="5">5.Έχει ήδη καταχωρηθεί λάθος ημ/νία στη φορολογική μνήμη</option>
          <option value="6">6.Έχουν δημιουργηθεί αδόκιμα δεδομένα στη φορολογική μνήμη</option>
      </select></td>
   <td></td>
   <tr>
   </tr>
   <tr>
</tr>
   <td></td>
<tr>
</tr>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------


function update_vlavi()  // καλείται από case 54, αντιγραφο της insert_vlavi
{  
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   $prof=new cPROFILER1();

   $fhmv = new one_FHM();
   if (!$fhmv->one_check()) {
      return after_login();
   }

   //ΑΦΜ και User_id από LDAP 
   $afm_man = trim($_SESSION['USERAFM']);
   $user_id_man = "esend".$afm_man ; 
   $afm_man = substr($afm_man."                 ",0,12);
   
   $transdate=date('d/m/Y');

   $currdoy='0000';
   $how_many=0;
   $vres_currdoy_registdate="SELECT * FROM TABLE(tameiakes.queries.vres_currdoy_registdate(:AFM))";
   $stmt=$db->Prepare($vres_currdoy_registdate);
   $data=array('AFM'=>$afm_man);
   if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   while ($row = $rs->FetchRow())
   {
      $currdoy = $row[0];
      $registdate = $row[1];
      $how_many++;
   }
   $rs->Close();
   $currdoy=substr($currdoy."        ",0,4);
   if ($currdoy=='0000') {
      uerror("Η καταχωρημένη δεν αντιστοιχεί στη πραγματική ΔΟΥ της κατασκευάστριας εταιρείας");
      return after_login();
   }
   
// 25_pausi start

$report_date =  strtr($_REQUEST['report_date'], '-', '/'); 
$report_date=trim($report_date);
$afm_own = trim($_REQUEST['afm_own']); $afm_own = trim ($afm_own); $afm_own=substr($afm_own."                     ",0,12);
$afm_texn = trim($_REQUEST['afm_texn']); $afm_texn=substr($afm_texn."                      ",0,12);
$lname_texn = trim($_REQUEST['lname_texn']);
$fname_texn = trim($_REQUEST['fname_texn']);
$afm_et_texn =trim($_REQUEST['afm_et_texn']); $afm_et_texn=substr($afm_et_texn."                      ",0,12);
$perigrafi = trim($_REQUEST['perigrafi']);
$pausi = 0;
$ftm=$fhmv->letter.$fhmv->sn;

$subm_date = date("d/m/Y");  $subm_date=trim($subm_date);

//έλεγχος ορθότητας ημερομηνίας ok
if (strlen($report_date) <> 10 or substr($report_date,0,2) < '01' or substr($report_date,0,2)>'31' or substr($report_date,3,2)<'01' 
or substr($report_date,3,2)>'12' or substr($report_date,6,4)<'2000') 
{uerror("Λάθος ημερομηνία έκδοσης τεχνικής αναφοράς");return after_login();} 

//έλεγχος ημερομηνίας έως 20/9/16
if (substr($report_date,6,4)>='2017')
{uerror("Η φόρμα χρησιμοποιείται μόνο για καταχωρήσεις τεχνικών αναφορών βλαβών που εκδόθηκαν πριν τις 31/12/2016");return after_login();}

/* εύρεση ΑΦΜ κατόχου,Αριθμου εγκρισης,start_code,start_date  */

$find_afm_ar_egkrisis="select * from table(tameiakes.queries.vres_afm_code_date_8_25(:FTM))";

$real_afm_own="000000000";
$how_many=0;
/* $fhmtype=0; */
$start_code=0;
$start_date=$subm_date;
$ar_egkrisis=0;

$stmt=$db->Prepare($find_afm_ar_egkrisis);
$data=array('FTM'=>$fhmv->letter.$fhmv->sn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

   while ($row = $rs->FetchRow())
   {
      $real_afm_own = $row[0];$real_afm_own=substr($real_afm_own."               ",0,12);
      $ar_egkrisis = $row[1];
      $start_code = $row[2];
      $start_date = $row[3];
      $how_many++;
   }
   $rs->Close();

if ($how_many >1) { uerror("Η ΕΝΕΡΓΕΙΑ ΔΕΝ ΜΠΟΡΕΙ ΝΑ ΟΛΟΚΛΗΡΩΘΕΙ (ΥΠΑΡΧΟΥΝ ΠΕΡΙΣΣΟΤΕΡΕΣ ΤΗΣ ΜΙΑΣ ΠΑΥΣΕΙΣ ΛΟΓΩ ΒΛΑΒΗΣ). ΕΠΙΚΟΙΝΩΝΗΣΤΕ ΜΕ ΤΟ 2104803133");return after_login();}
if ($how_many==0) { uerror("ΔΕΝ ΕΧΕΙ ΔΗΛΩΘΕΙ ΠΑΥΣΗ ΛΟΓΩ ΒΛΑΒΗΣ ΓΙΑ ΤΟΝ ΦΗΜ ΑΥΤΟ, Η Ο ΦΗΜ ΕΙΝΑΙ ΕΝΤΕΛΩΣ ΑΔΗΛΩΤΟΣ."); return after_login();}
$real_afm_own = trim($real_afm_own);
$ar_egkrisis=(int)$ar_egkrisis;
if (trim($real_afm_own)!==trim($afm_own)) { uerror("ΛΑΘΟΣ ΑΦΜ ΚΑΤΟΧΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}
if ($ar_egkrisis!==(int)$fhmv->tlt_code) { uerror("ΛΑΘΟΣ ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}

$vres_real_afm_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMTEXN))";

$stmt=$db->Prepare($vres_real_afm_texn);
$data=array('AFMTEXN'=>$afm_texn);

if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
$how_many=0;
$real_afm_texn="000000000000";
$real_lname_texn="000000000000";
$real_fname_texn="000000000000";

while ($row = $rs->FetchRow())
{
    $real_afm_texn = $row[0];
    $real_lname_texn = $row[1];
    $real_fname_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_texn=trim($real_afm_texn); */
$lname_texn_3=substr($lname_texn."      ",0,3);
$fname_texn_3=substr($fname_texn."      ",0,3);
$real_lname_texn_3=substr($real_lname_texn."      ",0,3);
$real_fname_texn_3=substr($real_fname_texn."      ",0,3);
if (trim($afm_texn)!==trim($real_afm_texn) or $lname_texn_3!==$real_lname_texn_3 or $fname_texn_3!==$real_fname_texn_3)
   { uerror("ΛΑΘΟΣ ΣΤΟΙΧΕΙΑ ΤΕΧΝΙΚΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}


//έλεγχος ΑΦΜ τεχν. εταιρείας $afm_et_texn ok

$vres_real_afm_et_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMETTEXN))";
$real_afm_et_texn="000000000000";
$real_lname_et_texn="000000000000";
$real_fname_et_texn="000000000000";
$how_many=0;

$stmt=$db->Prepare($vres_real_afm_et_texn);
$data=array('AFMETTEXN'=>$afm_et_texn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

while ($row = $rs->FetchRow())
{
    $real_afm_et_texn = $row[0];
    $real_lname_et_texn = $row[1];
    $real_fname_et_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_et_texn=trim($real_afm_et_texn); */
if (trim($afm_et_texn)!==trim($real_afm_et_texn)) { uerror("ΛΑΘΟΣ ΑΦΜ ΤΕΧΝ. ΕΤΑΙΡΕΙΑΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}


//ευρεση πρωτοκόλλου

$protocol25=0;
$how_many=0;
$vres_protocol25="SELECT * FROM TABLE(tameiakes.queries.vres_protocol)";

   $stmt=$db->Prepare($vres_protocol25);
   /* $data=array('PROT'=>$protocol25); */
   if (($rs=$db->Execute($stmt))===false) { uerror(__LINE__.$db->ErrorMsg());  return after_login(); }
   while ($row = $rs->FetchRow())
   {
      $protocol25 = $row[0];
      $how_many++;
   }
   $rs->Close();
   
   if ($protocol25==0 ) { uerror("Λάθος κατά τη δημιουργία πρωτοκόλλου"); return after_login(); }
$protocol25++;
$protocol26=$protocol25;

$db->StartTrans();


$upd_entry1="call tameiakes.queries.complete_old_malfunction(:vftm, :vafm_owner, :vstart_code, :vstart_date,
:vstop_code, :vsubm_date,:vreport_date,  :vperigrafi,
:vtechn_afm, :vcomp_afm, :vsekt_afm,     :vuser_id, :vprotocol)";
$stmt=$db->Prepare($upd_entry1);
$data25e=array('vftm'=>$ftm,'vafm_owner'=>$afm_own,'vstart_code'=>$start_code,'vstart_date'=>$start_date,
'vstop_code'=>$pausi, 'vsubm_date'=>$subm_date, 'vreport_date'=>$report_date, 'vperigrafi'=>$perigrafi, 
'vtechn_afm'=>$afm_texn,'vcomp_afm'=>$afm_et_texn, 'vsekt_afm'=>$afm_man,'vuser_id'=>$user_id_man,
'vprotocol'=>$protocol25);
if (!$db->Execute($stmt, $data25e))  {       uerror(__LINE__.$db->ErrorMsg());       return after_login();   }



if (!$db->HasFailedTrans()) {
      echo "<div>";       
      echo " H υποβολή της βλάβης για τoν ΦΗΜ ".$ftm. " καταχωρήθηκε επιτυχώς την ". $subm_date. " με αριθμό εγγραφής: ESE".str_pad($protocol26,8,"0",STR_PAD_LEFT)."<br>";
      echo " H υποβολή έγινε από την επιχείρηση-κάτοχο της άδειας καταλληλότητας/τεχνικής υποστήριξης του ΦΗΜ με ΑΦΜ:".$afm_man ."<br>";
      echo " Η τεχνική αναφορά βλάβης εκδόθηκε την ".$report_date. " Ο κάτοχος του ΦΗΜ έχει ΑΦΜ:".$afm_own ."<br>";    
      echo "</div>"; 
}
else {
      uerror("Δεν καταχωρήθηκαν τα συμπληρωματικά στοιχεία της βλάβης!");
}

$db->CompleteTrans();

?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();

}

//--------------------------------------


function ask_update_vlavi_newmemory() // καλείται από case 63 - καλεί την case 64 ok
{

   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

?>
<script>
$(function() {
    $( document.goForm.report_date ).datepicker();
  });
</script>

<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ </h1>
<h3>Υποβολή Τεχνικής Αναφοράς Bλάβης με ταυτόχρονη αντικατάσταση φορολογικής μνήμης ή Υποβολή εκπρόθεσμης βλάβης φορολογικής μνήμης</h3>
<h3>Η υποβολή αυτή γίνεται μόνο μετά την δήλωση της παύσης λόγω βλάβης με ταυτόχρονη αντικατάσταση μνήμης από τον κάτοχο του ΦΗΜ στo taxisnet. </h3>
<h3>Σε περίπτωση εκπρόθεσμης δήλωσης βλάβης φορολογικής μνήμης, η υποβολή αυτή γίνεται μετά την δήλωση της βλάβης από τον κάτοχο του ΦΗΜ στην αρμόδια ΔΟΥ. </h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="64">
<table>
<tr>
<td> Ημ/νία έκδοσης τεχνικής αναφοράς : </td>
<td align="left"><input type="text" name="report_date" value="<?php echo date('d-m-Y'); ?>"></td>
</tr>

<tr>
<td> ΑΦΜ κατόχου ΦΗΜ : </td>
<td align="left"><input type="text" name="afm_own" size="9" maxlength="20"></td>
</tr>

<tr>
<td> Αριθμός Μητρώου ΦΗΜ : </td>
<td align="left"><input type="text" name="ftm" id="ftm" maxlength="20" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>

<tr>
<td> Αριθμός έγκρισης ΦΗΜ : </td>
<td align="left"><input type="number" name="tlt_code"  step="1" min="1" size="10" maxlength="20"></td>
</tr>

<tr>
<td> ΑΦΜ εταιρείας του τεχνικού : </td>
<td align="left"><input type="text" name="afm_et_texn" size="9" maxlength="20"></td>
</tr>

<tr>
<td> ΑΦΜ Τεχνικού : </td>
<td align="left"><input type="text" name="afm_texn" size="9" maxlength="20"></td>
</tr>

<tr>
<td> Επώνυμο τεχνικού : </td>
<td align="left"><input type="text" name="lname_texn" size="25" maxlength="25"></td>
</tr>

<tr>
<td> Ονομα τεχνικού : </td>
<td align="left"><input type="text" name="fname_texn" size="15" maxlength="20"></td>
</tr>

<tr>
<td> Αριθμός Μητρώου νέας φορολογικής μνήμης (χωρίς ενδιάμεσα κενά) : </td>
<td align="left"><input type="text" name="newmemory" id="newmemory" maxlength="20" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>

<tr>
<td> ΕΚΠΡΟΘΕΣΜΗ; (1=ΝΑΙ) : </td>
<td align="left"><input type="number" name="ekpro" size="3" maxlength="3" value="0"  ></td>
</tr>






<tr>
   <td>Περιγραφή βλάβης:</td>
   <td><select name="perigrafi">
          <option value="1">1.Αδυναμία ανάγνωσης φορολογικής μνήμης</option>
          <option value="2">2.Αδυναμία εγγραφής και ανάγνωσης φορολογικής μνήμης</option>
          <option value="3">3.Αδυναμία εγγραφής σε μη πληρωθείσα φορολογική μνήμη</option>
          <option value="4">4.Αδυναμία εγγραφής σωστής ημ/νίας στη φορολογική μνήμη</option>
          <option value="5">5.Έχει ήδη καταχωρηθεί λάθος ημ/νία στη φορολογική μνήμη</option>
          <option value="6">6.Έχουν δημιουργηθεί αδόκιμα δεδομένα στη φορολογική μνήμη</option>
      </select></td>
   <td></td>
   <tr>
   </tr>
   <tr>
</tr>
   <td></td>
<tr>
</tr>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------


function update_vlavi_newmemory()  // καλείται από case 64
{
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   $prof=new cPROFILER1();

   $fhmv = new one_FHM();
   if (!$fhmv->one_check()) {
      return after_login();
   }

   //ΑΦΜ και User_id από LDAP



   $afm_man = trim($_SESSION['USERAFM']);
   $user_id_man = "esend".$afm_man ;
   $afm_man = substr($afm_man."                 ",0,12);

   $transdate=date('d/m/Y');

   $currdoy='0000';
   $how_many=0;
   $vres_currdoy_registdate="SELECT * FROM TABLE(tameiakes.queries.vres_currdoy_registdate(:AFM))";
   $stmt=$db->Prepare($vres_currdoy_registdate);
   $data=array('AFM'=>$afm_man);
   if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   while ($row = $rs->FetchRow())
   {
      $currdoy = $row[0];
      $registdate = $row[1];
      $how_many++;
   }
   $rs->Close();
   $currdoy=substr($currdoy."        ",0,4);
   if ($currdoy=='0000') {
      uerror("Η καταχωρημένη δεν αντιστοιχεί στη πραγματική ΔΟΥ της κατασκευάστριας εταιρείας");
      return after_login();
   }

$report_date =  strtr($_REQUEST['report_date'], '-', '/');
$report_date=trim($report_date);
$afm_own = trim($_REQUEST['afm_own']); $afm_own = trim ($afm_own); $afm_own=substr($afm_own."                     ",0,12);
$afm_texn = trim($_REQUEST['afm_texn']); $afm_texn=substr($afm_texn."                      ",0,12);
$lname_texn = trim($_REQUEST['lname_texn']);
$fname_texn = trim($_REQUEST['fname_texn']);
$afm_et_texn =trim($_REQUEST['afm_et_texn']); $afm_et_texn=substr($afm_et_texn."                      ",0,12);

$perigrafi = trim($_REQUEST['perigrafi']);
$pausi = 0;
$ftm=$fhmv->letter.$fhmv->sn;

$subm_date = date("d/m/Y");  $subm_date=trim($subm_date);
$ekpro= trim($_REQUEST['ekpro']);
$newmemory= trim($_REQUEST['newmemory']);

if ($ekpro != 1) { $ekpro=0;}
if ($ekpro==0 and strncmp($newmemory,$ftm,2) !=0)
{     uerror("Η υποβολή απορίπτεται γιατί δεν επιλέχθηκε ούτε το εκπρόθεσμο, ούτε πληκτρολογήθηκε σωστός αριθμός νέας φορολογικής μνήμης"); return after_login();  }


//έλεγχος ορθότητας ημερομηνίας ok
if (strlen($report_date) <> 10 or substr($report_date,0,2) < '01' or substr($report_date,0,2)>'31' or substr($report_date,3,2)<'01'
or substr($report_date,3,2)>'12' or substr($report_date,6,4)<'2000')
{uerror("Λάθος ημερομηνία έκδοσης τεχνικής αναφοράς");return after_login();}

/* εύρεση ΑΦΜ κατόχου,Αριθμου εγκρισης,start_code,start_date  */

$find_afm_ar_egkrisis="select * from table(tameiakes.queries.vres_afm_code_date_8_25(:FTM))";

$real_afm_own="000000000";
$how_many=0;
/* $fhmtype=0; */
$start_code=0;
$start_date=$subm_date;
$ar_egkrisis=0;

$stmt=$db->Prepare($find_afm_ar_egkrisis);
$data=array('FTM'=>$fhmv->letter.$fhmv->sn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

   while ($row = $rs->FetchRow())
   {
      $real_afm_own = $row[0];$real_afm_own=substr($real_afm_own."               ",0,12);
      $ar_egkrisis = $row[1];
      $start_code = $row[2];
      $start_date = $row[3];
      $how_many++;
   }
   $rs->Close();

if ($how_many >1) { uerror("Η ΕΝΕΡΓΕΙΑ ΔΕΝ ΜΠΟΡΕΙ ΝΑ ΟΛΟΚΛΗΡΩΘΕΙ (ΥΠΑΡΧΟΥΝ ΠΕΡΙΣΣΟΤΕΡΕΣ ΤΗΣ ΜΙΑΣ ΠΑΥΣΕΙΣ ΛΟΓΩ ΒΛΑΒΗΣ). ΕΠΙΚΟΙΝΩΝΗΣΤΕ ΜΕ ΤΟ 2131621133");return after_login();}
if ($how_many==0) { uerror("ΔΕΝ ΕΧΕΙ ΔΗΛΩΘΕΙ ΠΑΥΣΗ ΛΟΓΩ ΒΛΑΒΗΣ ΓΙΑ ΤΟΝ ΦΗΜ ΑΥΤΟ, Η Ο ΦΗΜ ΕΙΝΑΙ ΕΝΤΕΛΩΣ ΑΔΗΛΩΤΟΣ."); return after_login();}
$real_afm_own = trim($real_afm_own);
$ar_egkrisis=(int)$ar_egkrisis;
if (trim($real_afm_own)!==trim($afm_own)) { uerror("ΛΑΘΟΣ ΑΦΜ ΚΑΤΟΧΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}
if ($ar_egkrisis!==(int)$fhmv->tlt_code) { uerror("ΛΑΘΟΣ ΑΡΙΘΜΟΣ ΕΓΚΡΙΣΗΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}

/*if ($fhmtype==5) {$eafdss_y_n=5;} else {$eafdss_y_n=0;}; */


//έλεγχος τεχνικού $afm_texn - $lname_texn - $fname_texn ok

$vres_real_afm_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMTEXN))";

$stmt=$db->Prepare($vres_real_afm_texn);
$data=array('AFMTEXN'=>$afm_texn);

if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
$how_many=0;
$real_afm_texn="000000000000";
$real_lname_texn="000000000000";
$real_fname_texn="000000000000";

while ($row = $rs->FetchRow())
{
    $real_afm_texn = $row[0];
    $real_lname_texn = $row[1];
    $real_fname_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_texn=trim($real_afm_texn); */
$lname_texn_3=substr($lname_texn."      ",0,3);
$fname_texn_3=substr($fname_texn."      ",0,3);
$real_lname_texn_3=substr($real_lname_texn."      ",0,3);
$real_fname_texn_3=substr($real_fname_texn."      ",0,3);
if (trim($afm_texn)!==trim($real_afm_texn) or $lname_texn_3!==$real_lname_texn_3 or $fname_texn_3!==$real_fname_texn_3)
   { uerror("ΛΑΘΟΣ ΣΤΟΙΧΕΙΑ ΤΕΧΝΙΚΟΥ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}


//έλεγχος ΑΦΜ τεχν. εταιρείας $afm_et_texn ok

$vres_real_afm_et_texn="select * from table(tameiakes.queries.vres_afm_surname(:AFMETTEXN))";
$real_afm_et_texn="000000000000";
$real_lname_et_texn="000000000000";
$real_fname_et_texn="000000000000";
$how_many=0;

$stmt=$db->Prepare($vres_real_afm_et_texn);
$data=array('AFMETTEXN'=>$afm_et_texn);
if (($rs=$db->Execute($stmt, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }

while ($row = $rs->FetchRow())
{
    $real_afm_et_texn = $row[0];
    $real_lname_et_texn = $row[1];
    $real_fname_et_texn = $row[2];
    $how_many++;
 }
$rs->Close();

/*$real_afm_et_texn=trim($real_afm_et_texn); */
if (trim($afm_et_texn)!==trim($real_afm_et_texn)) { uerror("ΛΑΘΟΣ ΑΦΜ ΤΕΧΝ. ΕΤΑΙΡΕΙΑΣ! ΕΠΑΝΑΛΑΒΕΤΕ");return after_login();}


//ευρεση πρωτοκόλλου

$protocol25=0;
$how_many=0;
$vres_protocol25="SELECT * FROM TABLE(tameiakes.queries.vres_protocol)";

   $stmt=$db->Prepare($vres_protocol25);
   /* $data=array('PROT'=>$protocol25); */
   if (($rs=$db->Execute($stmt))===false) { uerror(__LINE__.$db->ErrorMsg());  return after_login(); }
   while ($row = $rs->FetchRow())
   {
      $protocol25 = $row[0];
      $how_many++;
   }
   $rs->Close();

   if ($protocol25==0 ) { uerror("Λάθος κατά τη δημιουργία πρωτοκόλλου"); return after_login(); }
$protocol25++;
$protocol26=$protocol25;
$parat=" ";
$db->StartTrans();


$upd_entry1="call tameiakes.queries.complete_new_malfunction(:vftm, :vafm_owner, :vstart_code, :vstart_date,
:vstop_code, :vsubm_date,:vreport_date,  :vperigrafi,
:vtechn_afm, :vcomp_afm, :vsekt_afm,     :vuser_id, :vprotocol, :vnewmemory, :vparat, :vekpro)";
$stmt=$db->Prepare($upd_entry1);
$data25e=array('vftm'=>$ftm,'vafm_owner'=>$afm_own,'vstart_code'=>$start_code,'vstart_date'=>$start_date,
'vstop_code'=>$pausi, 'vsubm_date'=>$subm_date, 'vreport_date'=>$report_date, 'vperigrafi'=>$perigrafi,
'vtechn_afm'=>$afm_texn,'vcomp_afm'=>$afm_et_texn, 'vsekt_afm'=>$afm_man,'vuser_id'=>$user_id_man,
'vprotocol'=>$protocol25, 'vnewmemory'=>$newmemory, 'vparat'=>$parat, 'vekpro'=>$ekpro);
if (!$db->Execute($stmt, $data25e))  {       uerror(__LINE__.$db->ErrorMsg());       return after_login();   }



if (!$db->HasFailedTrans()) {
      echo "<div>";
      echo " H υποβολή της βλάβης για τoν ΦΗΜ ".$ftm. " καταχωρήθηκε επιτυχώς την ". $subm_date. " με αριθμό εγγραφής: ESE".str_pad($protocol26,8,"0",STR_PAD_LEFT)."<br>";
      echo " H υποβολή έγινε από την επιχείρηση-κάτοχο της άδειας καταλληλότητας/τεχνικής υποστήριξης του ΦΗΜ με ΑΦΜ:".$afm_man ."<br>";
      echo " Η τεχνική αναφορά βλάβης εκδόθηκε την ".$report_date. " Ο κάτοχος του ΦΗΜ έχει ΑΦΜ:".$afm_own ."<br>";
      echo "</div>";
}
else {
      uerror("Δεν καταχωρήθηκε η υποβολή! Επαναλάβετε.");
}

$db->CompleteTrans();

?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();

}


//--------------------------------------



function ask_search_vlavi() // καλείται από case 55 - καλεί την case 56
{

   global $x2;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();



?>
<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ</h1>
<h3>Αναζήτηση υποβληθείσας Τεχνικής Αναφοράς βλάβης</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="56">
<table>
<tr>
<td> Αριθμός Μητρώου ΦΗΜ : </td>
<td align="left"><input type="text" name="ftm" id="ftm" maxlength="20" pattern=".{2,3}[0-9]{8}" placeholder="2(3) γράμματα + 8 αριθμοί"></td>
</tr>
<td> Αριθμός έγκρισης ΦΗΜ : </td>
<td align="left"><input type="number" name="tlt_code"  step="1" min="1" size="10" maxlength="20"></td>
</tr>
<tr>
</tr>
   <td></td>
   <tr>
   </tr>
   <tr>
</tr>
   <td></td>
<tr>
</tr>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
   <tr>
   </tr>
   <tr>
</tr>
   <td></td>
</table>
</form>


<?php
   print_footer();
}
//--------------------------------------


function search_vlavi()  // καλείται από case 55
{  

$ftm="";
$tlt_code="";
$protocol30="";
$tlo_trans_date="";
$ese_trans_date="";
$report_date="";
$afm_own="";
$z_num="";
$z_date="";
$sekt_afm="";
$afm_et_texn="";
$afm_texn="";
$lname_texn="";
$fname_texn="";
$tziros_fpa="";
$tziros_fpa0="";
$axia_fpaa="";
$axia_fpab="";
$axia_fpac="";
$axia_fpad="";
$z_hex="";
$pausi="";
$perigrafi="";
$ML_PERIGRAFI="";


   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   $prof=new cPROFILER1();

   $fhmv = new one_FHM();
   if (!$fhmv->one_check()) {
      return after_login();
   }


$ftm=$fhmv->letter.$fhmv->sn;

// εδώ το query για τα δεδομένα της βλάβης.
/* εύρεση των δεδομένων της βλάβης*/
     
$how_many=0;
/* ΕΠΙΣΤΡΈΦΕΙ ΜΟΝΟ ΤΗΝ ΒΛΑΒΗ ΜΕ ΤΟΝ ΠΙΟ ΜΕΓΑΛΟ ΑΡΙΘΜΟ ΚΑΤΑΧΩΡΗΣΗΣ */
$query="SELECT * FROM (SELECT  MAL_REGISTRATION_NUM, MAL_FRM_AFM, MAL_START_TCR_CODE, to_char(MAL_START_DATE,'DD/MM/YYYY') mll_start_date, MAL_STOP_TCR_CODE,MAL_STOP_DATE, MAL_TECHN_REPORT_DATE, MAL_PERIGRAFI,                  
 MAL_TECHN_AFM, MAL_COMP_AFM, MAL_SEKT_AFM, MAL_USER_ID ,  MAL_TRANS_DATE, MAL_AA_EGRAFI                
 FROM ESE_MALFUNCTION WHERE MAL_REGISTRATION_NUM=:FTM order by mal_aa_egrafi DESC) WHERE ROWNUM <=1";
      $stmt=$db->Prepare($query);
      $data=array('FTM'=>$ftm);
      
      if (($rs=$db->Execute($stmt,$data))===false) {          uerror( __LINE__.$db->ErrorMsg() );          return false;       }
      while ($row = $rs->FetchRow())
      { $ML_REGISTRATION_NUM =$row[0]; 
        $ML_FRM_AFM=$row[1];
        $ML_START_TCR_CODE=$row[2];
        $ML_START_DATE=$row[3];
        $ML_STOP_TCR_CODE=$row[4];
        $ML_STOP_DATE=$row[5];
        $ML_TECHN_REPORT_DATE=$row[6];
        $ML_PERIGRAFI=$row[7];
        $ML_TECHN_AFM=$row[8];
        $ML_COMP_AFM=$row[9];
        $ML_SEKT_AFM=$row[10];
        $ML_USER_ID=$row[11];
        $ML_TRANS_DATE=$row[12];
        $ML_AA_EGRAFI=$row[13];
        $how_many++; }
        
       
        if ($ML_PERIGRAFI==1) { $perigrafi=' 1.Αδυναμία ανάγνωσης φορολογικής μνήμης                   ';}
        if ($ML_PERIGRAFI==2) { $perigrafi=' 2.Αδυναμία εγγραφής και ανάγνωσης φορολογικής μνήμης      ';}
        if ($ML_PERIGRAFI==3) { $perigrafi=' 3.Αδυναμία εγγραφής σε μη πληρωθείσα φορολογική μνήμη     ';}
        if ($ML_PERIGRAFI==4) { $perigrafi=' 4.Αδυναμία εγγραφής σωστής ημ/νίας στη φορολογική μνήμη   ';}
        if ($ML_PERIGRAFI==5) { $perigrafi=' 5.Έχει ήδη καταχωρηθεί λάθος ημ/νία στη φορολογική μνήμη  ';}
        if ($ML_PERIGRAFI==6) { $perigrafi=' 6.Έχουν δημιουργηθεί αδόκιμα δεδομένα στη φορολογική μνήμη';}

      $rs->Close();
      if ($how_many==0) {
         uerror("Δεν έχουν καταχωρηθεί δεδομένα βλάβης για αυτον τον ΦΗΜ. Καταχωρείστε τα δεδομένα της βλάβης είτε από την υποβολή βλάβης είτε από την συμπλήρωση υποβληθείσας τεχνικής αναφοράς βλάβης.");
         ?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();
         return false;
      }    

//έυρεση υπόλοιπων δεδομένων παύσης λόγω βλάβης.Αν είναι περισσότερες της μιας εγγραφές, η get_25_8 τις φέρνει από την πρώτη προς την πλέον πρόσφατη
   $how_many=0;
   $vres_pausi_25_8="SELECT * FROM TABLE(tameiakes.queries.get_25_8(:FTM,:AFM_OWNER, :START_CODE, :START_DATE))";
   $stmt=$db->Prepare($vres_pausi_25_8);
   $data=array('FTM'=>$ML_REGISTRATION_NUM, 'AFM_OWNER'=>$ML_FRM_AFM, 'START_CODE'=>$ML_START_TCR_CODE, 'START_DATE'=>$ML_START_DATE);
   if (($rs=$db->Execute($stmt, $data))===false) {       uerror(__LINE__.$db->ErrorMsg());       return after_login(); }
   while ($row = $rs->FetchRow())
   {
      $z_date = $row[0];    
      $z_num = $row[1];
      $tziros_fpa=$row[2];
      $tziros_fpa0=$row[3];
      $axia_fpaa=$row[4];
      $axia_fpab=$row[5];
      $axia_fpac=$row[6];
      $axia_fpad=$row[7];
      $z_hex=$row[8];
      $pausi=$row[9];
      
      $how_many++;
   }
   $rs->Close();
   
echo "<h3>Αποτελέσματα αναζήτησης Τεχνικής αναφοράς βλάβης " .$ftm. " </h3>";
echo "<br>";

echo "Αριθμός καταχώρησης εγγραφής : " .$ML_AA_EGRAFI;
echo "<br>";
echo "Ημερομηνία καταχώρησης βλάβης : " .$ML_TRANS_DATE;
echo "<br>";
echo "Ημερομηνία παύσης ΦΗΜ: " .$ML_STOP_DATE;
echo "<br>";
echo "Ημ/νία έκδοσης τεχνικής αναφοράς : " .$ML_TECHN_REPORT_DATE;
echo "<br>";
echo "ΑΦΜ κατόχου ΦΗΜ                  : " .$ML_FRM_AFM;
echo "<br>";
echo "Αριθμός τελευταίου Ζ             : " .$z_num;
echo "<br>";
echo "Ημερομηνία τελευταίου Ζ          : " .$z_date;
echo "<br>";
echo "ΑΦΜ εταιρείας έχουσας την άδεια καταλληλότητας/τεχνικής υποστήριξης : " .$ML_SEKT_AFM;
echo "<br>";
echo "ΑΦΜ εταιρείας του τεχνικού       : " .$ML_COMP_AFM;
echo "<br>";
echo "ΑΦΜ Τεχνικού                     : " .$ML_TECHN_AFM;
echo "<br>";
echo "Ποσό τζίρου υπαγόμενου σε ΦΠΑ    : " .$tziros_fpa;
echo "<br>";
echo "Ποσό τζίρου μηδενικού συντ.ΦΠΑ   : " .$tziros_fpa0;
echo "<br>";
echo "Αξία ΦΠΑ συντελεστή Α            : " .$axia_fpaa;
echo "<br>";
echo "Αξία ΦΠΑ συντελεστή Β            : " .$axia_fpab;
echo "<br>";
echo "Αξία ΦΠΑ συντελεστή Γ            : " .$axia_fpac;
echo "<br>";
echo "Αξία ΦΠΑ συντελεστή Δ            : " .$axia_fpad;
echo "<br>";
echo "ΠΑΗΨΣ τελευταιου Ζ               : " .$z_hex;
echo "<br>";
echo "Κωδικός παύσης                   : " .$pausi;
echo "<br>";
echo "Περιγραφή βλάβης                 : " .$perigrafi;
echo "<br>";

?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();

}


//****************************************//


function ask_for_invoice()
{
//198--->καλει την 199
   global $x2;

//   if ($x2->ULEVEL!=4) // precaution
//      return ask_user_login();

?>
<script>
$(function() {
    $( document.goForm.inv_fdatetime).datepicker();
  });
</script>

<h1>Δ.ΥΠ.ΗΛ.Υ  TΜΗΜΑ Ε&apos; ΣΥΣΤΗΜΑΤΩΝ ΔΙΑΣΦΑΛΙΣΗΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΜΠΟΡΙΚΩΝ ΣΥΝΑΛΛΑΓΩΝ</h1>
<h3>Καταχώρηση χειρόγραφου παραστατικού</h3>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="199">
<table>
<tr>
<td> Ημ/νία έκδοσης παραστατικού: </td>
<td align="left"><input type="text" name="inv_fdatetime" value="<?php echo date('d-m-Y'); ?>"></td>
</tr>
<tr>
<td> Αριθμός παραστατικού: </td>
<td align="left"><input type="number" name="inv_docnr"  size="9" maxlength="20"></td>
<td> Σειρά παραστατικού: </td>
<td align="left"><input type="text" name="inv_seira"  size="9" maxlength="20"></td>
</tr>

<tr>
<td> ΑΦΜ πελάτη (κενό για την λιανική): </td>
<td align="left"><input type="text" name="inv_recv_afm" size="9" maxlength="20"></td>
</tr>

<tr>
<td> Καθαρή αξία Α: </td>
<td align="left"><input type="number" name="inv_netvala"   step="0.01" min="0" size="14" maxlength="20"></td>
<td> Αξία ΦΠΑ συντελεστή Α: </td>
<td align="left"><input type="number" name="inv_vatvala"   step="0.01" min="0" size="14" maxlength="20"></td>
</tr>
<tr>
<td> Καθαρή αξία Β: </td>
<td align="left"><input type="number" name="inv_netvalb"   step="0.01" min="0" size="14" maxlength="20"></td>
<td> Αξία ΦΠΑ συντελεστή Β: </td>
<td align="left"><input type="number" name="inv_vatvalb"   step="0.01" min="0" size="14" maxlength="20"></td>
</tr>
<tr>
<td> Καθαρή αξία Γ: </td>
<td align="left"><input type="number" name="inv_netvalc"   step="0.01" min="0" size="14" maxlength="20"></td>
<td> Αξία ΦΠΑ συντελεστή Γ: </td>
<td align="left"><input type="number" name="inv_vatvalc"   step="0.01" min="0" size="14" maxlength="20"></td>
</tr>

<tr>
<td> Καθαρή αξία Ε: </td>
<td align="left"><input type="number" name="inv_netvale"   step="0.01" min="0" size="14" maxlength="20"></td>
<td> Παρακράτηση φόρου: </td>
<td align="left"><input type="number" name="inv_parakratisi_forou"   step="0.01" min="0" size="14" maxlength="20"></td>
</tr>

<tr>   
   <td>Είδος παραστατικού: </td>
   <td><select name="inv_docid">
          <option value="165">Τιμολόγιο</option>
          <option value="169">Πιστωτικό τιμολόγιο</option>
          <option value="270">Τιμολόγιο αγοράς</option>
          <option value="750">Αποδοχή τιμολογίου</option>
          <option value="751">Αποδοχή πιστωτικού τιμολογίου</option>
          <option value="158">Δελτίο αποστολής</option>
          <option value="504">"Ζ" ταμειακής μηχανής παλαιού τύπου</option>
          <option value="505">Απόδειξη ταμειακής μηχανής παλαιού τύπου</option>
          <option value="188">Δελτίο παραγγελίας (εστιατόρια)</option>
          <option value="173">Στοιχείο λιανικών συναλλαγών</option>
          <option value="175">Πιστωτικό στοιχείο λιανικών συναλλαγών</option>
          <option value="179">Απόδειξη δαπάνης</option>
          <option value="178">Απόδειξη αυτοπαράδοσης</option>
          <option value="753">Αυτοτιμολόγηση</option>
          <option value="54">Απόδειξη ασφαλίστρων</option>
          <option value="56">Απόδειξη επιστροφής ασφαλίστρων</option>
          <option value="137">Εισητήριο ή απόδειξη μεταφοράς</option>
          <option value="168">Εκκαθάριση</option>
          <option value="176">Απόδειξη είσπραξης συνδρομών εφημερίδων και περιοδικών</option>
          <option value="182">Διορθωτικό σημείωμα</option>
          <option value="190">Απόδειξη πώλησης εισιτηρίων</option>
          <option value="215">Ειδικό ακυρωτικό στοιχείο</option>
          <option value="310">Παράδοση κτισμάτων</option>
          <option value="329">Τιμολόγιο παροχής υπηρεσιών-Τιμολόγιο αγοράς αγροτικών προϊόντων-Δελτίο αποστολής</option>
          <option value="500">Διάφορα βιβλία</option>
          <option value="501">Λοιπά στοιχεία</option>
          <option value="502">Αντίτυπο</option>
          <option value="752">Έξοδο άνευ παραστατικών</option>
          <option value="503">Λοιπά στοιχεία μηδενικής αξίας</option>
      </select></td>
   <td></td>
</tr>
<tr>   
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>

</table>
</form>
<?php
   print_footer();
}
//--------------------------------------

function insert_invoice()
{  
   global $x2;
   $db=&$x2->db;
$afm_man = trim($_SESSION['USERAFM']);
 //  if ($x2->ULEVEL!=4) // precaution
 //     return ask_user_login();


$inv_fdatetime =  strtr($_REQUEST['inv_fdatetime'], '-', '/'); $inv_fdatetime=trim($inv_fdatetime);
$inv_docnr = trim($_REQUEST['inv_docnr']); $char_docnr=$inv_docnr; $inv_docnr=(int)$inv_docnr;
$inv_seira = trim($_REQUEST['inv_seira']);
/* $inv_issuer_afm = trim($_REQUEST['inv_issuer_afm']); $inv_issuer_afm = trim ($inv_issuer_afm); $inv_issuer_afm=substr($inv_issuer_afm."                     ",0,12); */
$inv_recv_afm = trim($_REQUEST['inv_recv_afm']); $inv_recv_afm = trim ($inv_recv_afm); $inv_recv_afm=substr($inv_recv_afm."                     ",0,12);
$inv_netvala = trim($_REQUEST['inv_netvala']); $neta=(float)$inv_netvala;
$inv_vatvala = trim($_REQUEST['inv_vatvala']); $vata=(float)$inv_vatvala;
$inv_netvalb = trim($_REQUEST['inv_netvalb']); $netb=(float)$inv_netvalb;
$inv_vatvalb = trim($_REQUEST['inv_vatvalb']); $vatb=(float)$inv_vatvalb;
$inv_netvalc = trim($_REQUEST['inv_netvalc']); $netc=(float)$inv_netvalc;
$inv_vatvalc = trim($_REQUEST['inv_vatvalc']); $vatc=(float)$inv_vatvalc;
/* $inv_netvald = trim($_REQUEST['inv_netvald']); $netd=(float)$inv_netvald;
$inv_vatvald = trim($_REQUEST['inv_vatvald']); $vatd=(float)$inv_vatvald; */
$netd=0; $vatd=0;
$inv_netvale = trim($_REQUEST['inv_netvale']); $nete=(float)$inv_netvale;
$inv_parakratisi_forou = trim($_REQUEST['inv_parakratisi_forou']); $inv_parakratisi_forou=(float)$inv_parakratisi_forou;
/* $inv_progressive = trim($_REQUEST['inv_progressive']); $inv_progressive=(float)$inv_progressive; */
$inv_docid = trim($_REQUEST['inv_docid']);

$inv_gtotal=(float)($neta + $netb + $netc + $netd + $nete + $vata +$vatb+$vatc);

$hmera_system=date("Ymd");
$eid_system=date("YmdHis").$char_docnr ; $eid_system=(int)$eid_system;
$hmera_systemp=date("d/m/Y");

  
echo "<h3>Στοιχεία χειρόγραφου παραστατικού </h3>";
echo "<br>";
echo "Ημ/νία έκδοσης: " .$inv_fdatetime;
echo "<br>";
echo "Αριθμός: " .$inv_docnr;
echo "<br>";
echo "Σειρά : " .$inv_seira;
echo "<br>";
echo "ΑΦΜ εκδότη : " .$afm_man;
echo "<br>";
echo "ΑΦΜ πελάτη : " .$inv_recv_afm;
echo "<br>";
echo "Καθαρή αξία Α : " .$neta;
echo "<br>";
echo "Αξία ΦΠΑ Α : " .$vata;
echo "<br>";
echo "Καθαρή αξία Β : " .$netb;
echo "<br>";
echo "Αξία ΦΠΑ Β : " .$vatb;
echo "<br>";
echo "Καθαρή αξία Γ : " .$netc;
echo "<br>";
echo "Αξία ΦΠΑ Γ : " .$vatc;
echo "<br>";
echo "Καθαρή αξία Ε : " .$nete;
echo "<br>";
echo "Γενικό Σύνολο : " .$inv_gtotal;
echo "<br>";
echo "Παρακράτηση φόρου : " .$inv_parakratisi_forou;
echo "<br>";
echo "Είδος παραστατικού : " .$inv_docid;
echo "<br>";
echo "Ημερομηνία καταχώρισης:".$hmera_systemp;
echo "<br>";
echo "Αριθμός καταχώρισης:".$eid_system;
echo "<br>";


$p_fdatetime=substr($inv_fdatetime,6,4).substr($inv_fdatetime,3,2).substr($inv_fdatetime,0,2)."0000";

$query_xeir="INSERT INTO ese_xeir (eid,docid,issuer_afm,recv_afm,eafdss,daily,progressive,znr,seira,docnr,netvala,netvalb,netvalc,netvald,netvale,vatvala,vatvalb,vatvalc,vatvald,gtotal,curcode,fdatetime,parakratisi_forou,hmera) 
                           VALUES (:X_EID,:X_DOCID, :X_ISSUER_AFM, :X_RECV_AFM,'n',0,0,0, :X_SEIRA , :X_DOCNR,:X_NETA,:X_NETB,:X_NETC,0,:X_NETE,:X_VATA,:X_VATB,:X_VATC,0,:X_GTOTAL,'0',:XFDATE,:XPARAKRATISI,:X_HMERA)";
$stmt=$db->Prepare($query_xeir);
$data=array('X_EID'=>$eid_system,'X_DOCID'=>$inv_docid,'X_ISSUER_AFM'=>$afm_man,'X_RECV_AFM'=>$inv_recv_afm,'X_SEIRA'=>$inv_seira,'X_DOCNR'=>$inv_docnr,'X_NETA'=>$neta,'X_NETB'=>$netb,'X_NETC'=>$netc,'X_NETE'=>$nete,'X_VATA'=>$vata,'X_VATB'=>$vatb,'X_VATC'=>$vatc,'X_GTOTAL'=>$inv_gtotal,'XFDATE'=>$p_fdatetime,'XPARAKRATISI'=>$inv_parakratisi_forou, 'X_HMERA'=>$hmera_system);
if (!$db->Execute($stmt,$data)) { uerror( __LINE__.$db->ErrorMsg() ); }


?>

<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<table>

   <td>
      <button type=button class=bigButton onclick="goTo(6)">Επιστροφή</button>
   </td>
</table>
</form>

<?php
   print_footer();


}


//--------------------------------------

function query_vlavi()
{
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL!=4) // precaution
      return ask_user_login();

   echo "<h1>Επιθεώρηση Τεχνικών αναφορών βλάβης φορολογικής μνήμης. ΑΜ από.... έως....</h1>";

   $prof=new cPROFILER1();

   $fhm = new ccFHM();
   if (!$fhm->check()) {
      return after_login();
   }
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";

  
   /* βήμα 1 ευρεση μόνο των σειριακών που έχει δηλωθεί παύση λόγω βλάβης */   
   $ftm_array=array(); 
   $date_array=array();
   $paysi_array=array();
   $how_many=0;
   $serial_number1 = $fhm->letter.$fhm->init_sn;
   $serial_number2 = $fhm->letter.$fhm->final_sn;
   $date16="01/01/1900";
   $enarji='0';
   $vres_8_25_fromto="select * from table(tameiakes.queries.vres_8_25_fromto(:serial_number1, :serial_number2))";
   $stmt = $db->Prepare($vres_8_25_fromto);
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   $data=array('serial_number1'=>$serial_number1, 'serial_number2'=>$serial_number2);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   /* echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->"; */
   while ($row = $rs->FetchRow())
   {
      $ftm_array[]=$row[2];     
      $date_array[]=$row[0];
      $paysi_array[]=$row[1];
      $how_many++;
   }
   $rs->Close();
   
   /* βήμα 2: ευρευση των δεδομένων της βλάβης για κάθε σειριακό */
   $message_array=array();
   for ($i44=0; $i44< $how_many; $i44++) 
   {
     $perigrafi3="";
     $how_many3=0;
     /* ΕΠΙΣΤΡΈΦΕΙ ΜΟΝΟ ΤΗΝ ΒΛΑΒΗ ΜΕ ΤΟΝ ΠΙΟ ΜΕΓΑΛΟ ΑΡΙΘΜΟ ΚΑΤΑΧΩΡΗΣΗΣ */
     $query3="SELECT * FROM (SELECT   MAL_TECHN_REPORT_DATE, MAL_PERIGRAFI, MAL_TECHN_AFM, MAL_TRANS_DATE, MAL_AA_EGRAFI FROM ESE_MALFUNCTION WHERE MAL_REGISTRATION_NUM=:FTM order by mal_aa_egrafi DESC) WHERE ROWNUM <=1";
     $stmt=$db->Prepare($query3);
     $data=array('FTM'=>$ftm_array[$i44]);
      
     if (($rs=$db->Execute($stmt,$data))===false) {          uerror( __LINE__.$db->ErrorMsg() );          return false;       }
     while ($row = $rs->FetchRow())
     { $ML_TECHN_REPORT_DATE=$row[0];
        $ML_PERIGRAFI=$row[1];
        $ML_TECHN_AFM=$row[2];        
        $ML_TRANS_DATE=$row[3];
        $ML_AA_EGRAFI=$row[4];
        if ($ML_PERIGRAFI==1) { $perigrafi3=' 1.Αδυναμία ανάγνωσης φορολογικής μνήμης                   ';}
        if ($ML_PERIGRAFI==2) { $perigrafi3=' 2.Αδυναμία εγγραφής και ανάγνωσης φορολογικής μνήμης      ';}
        if ($ML_PERIGRAFI==3) { $perigrafi3=' 3.Αδυναμία εγγραφής σε μη πληρωθείσα φορολογική μνήμη     ';}
        if ($ML_PERIGRAFI==4) { $perigrafi3=' 4.Αδυναμία εγγραφής σωστής ημ/νίας στη φορολογική μνήμη   ';}
        if ($ML_PERIGRAFI==5) { $perigrafi3=' 5.Έχει ήδη καταχωρηθεί λάθος ημ/νία στη φορολογική μνήμη  ';}
        if ($ML_PERIGRAFI==6) { $perigrafi3=' 6.Έχουν δημιουργηθεί αδόκιμα δεδομένα στη φορολογική μνήμη';}
        $how_many3++; 
     }       
     $rs->Close();
     if ($how_many3==0) { $perigrafi3=" Δεν έχουν καταχωρηθεί δεδομένα βλάβης για αυτον τον ΦΗΜ από την επιχείρησή σας"; }
     else  {$perigrafi3= $perigrafi3. "  α/α καταχώρησης βλάβης:".$ML_AA_EGRAFI ;}  
     $message_array[]=$perigrafi3 ;   
   }
   
   /* βήμα 3: κατασκευή της απεικόνισης */


   $gr1=new cXRID('grid19');

   array_push( $gr1->cols,
		array( 'α/α', 80),
      array( 'Serial', 80),
      array( 'Ημερομηνία', 120),
      array( 'Κωδικός παύσης - είδος βλάβης - α/α καταχώρησης βλάβης', 150)
      );
    
   /*
   $how_many=1;
   $serial_number1 = $fhm->letter.$fhm->init_sn;
   $serial_number2 = $fhm->letter.$fhm->final_sn;
   $date16="01/01/1900";
   $enarji='0';
   $vres_8_25_fromto="select * from table(tameiakes.queries.vres_8_25_fromto(:serial_number1, :serial_number2))";
   $stmt = $db->Prepare($vres_8_25_fromto);
   
   $data=array('serial_number1'=>$serial_number1, 'serial_number2'=>$serial_number2);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login();
   }
   echo "<!-- ".__LINE__." elapsed: ".$prof->elapsed()." -->";
   while ($row = $rs->FetchRow()) */
   
   for ($i44=0; $i44<$how_many; $i44++) 
   {
      $i45=$i44+1;
      $r2=array($i45, $ftm_array[$i44]);
      $r2[]=$date_array[$i44]; // Ημερομηνία

      $paysi=$paysi_array[$i44];
      $val=$paysi;
      if ($paysi==8) { $val .= " Βλάβη μνήμης και αντικατάσταση ";  }
      else if ($paysi==25) {  $val .= " Βλάβη μνήμης                   "; }
      $r2[]=$val. $message_array[$i44];
      
      $gr1->rows[]=$r2;
      
   }
   $rs->Close();
   $gr1->play();
   
   
   echo "<div id=tbar2><b>
      <a href=\"javascript:goTo(51)\">Νέο ερώτημα</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";
}
//****************************************//




function ask_report()
{
   global $x2;
   
   $today=date('d-m-Y');
?>
<script>
$(function() {
    $( document.goForm.FROMDATE ).datepicker();
    $( document.goForm.TODATE ).datepicker();
  });
function monthBack()
{
   var f1=document.goForm.FROMDATE;
   var ar1=f1.value.split('-');
   if (ar1.length!=3) { ar1=['01', '01', '2000'] };
   var x=parseInt(ar1[0]); // date
   if (x>1) {
      ar1[0]='01';
      f1.value=ar1.join('-');
      return;
   }
   // x<=1:
   var d1=new Date(ar1[2], ar1[1]-2, 1); 
   ar1[0]='01';
   ar1[1]=d1.getMonth()+1;
   ar1[2]=d1.getFullYear();
   f1.value=ar1.join('-');
}
function monthFront()
{
   var f1=document.goForm.FROMDATE;
   var ar1=f1.value.split('-');
   if (ar1.length!=3) { ar1=['01', '01', '2000'] };
   var x=parseInt(ar1[1]); // month
   var d1=new Date(ar1[2], x, 1);
   ar1[0]='01';
   ar1[1]=d1.getMonth()+1;
   ar1[2]=d1.getFullYear();
   f1.value=ar1.join('-');
}
function monthEnd()
{
   var f1=document.goForm.FROMDATE;
   var f2=document.goForm.TODATE;
   var ar1=f1.value.split('-');
   while (ar1.length<3) {
      ar1.push('0');
   }
   var d1=new Date(ar1[2], ar1[1], 0);
   f2.value = d1.getDate()+'-'+(d1.getMonth()+1)+'-'+d1.getFullYear();
}
</script>
<h1>Report ΦΠΑ</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="171">
<table>
<tr>
   <td>ΑΦΜ</td>
   <td><input type=text name="AFM" <?php
      if ($x2->ULEVEL==2) { // end user
         $ar1=explode(' ',$x2->FULLNAME);
         if (count($ar1)<2) { $ar1[1]="UNKNOWN"; }
         echo " value=\"".myhtml($ar1[1])."\" readonly ";    
      } 
   ?> maxlength=11>(συμμπληρώστε αν θέλετε τέτοιο φίλτρο)</td>
</tr>
<tr>
   <td>ΦΗΜ</td>
   <td><input type=text name="EAFDSS" maxlength=14>(συμμπληρώστε αν θέλετε τέτοιο φίλτρο)</td>
</tr>   
   <td>Από ημερομηνία</td>
   <td><input type=text name="FROMDATE" value="<?php echo $today; ?>">
      <button type=button onclick="monthBack()" title="Μήνας πίσω">M-</button> 
      <button type=button onclick="monthFront()" title="Μήνας εμπρός">M+</button>
   </td>
</tr>
<tr>   
   <td>Ως ημερομηνία</td>
   <td><input type=text name="TODATE" value="<?php echo $today; ?>">
      <button type=button onclick="monthEnd()" title="Τέλος μήνα">T/M</button>
   </td>
</tr>
<tr>   
   <td>Απαλασσόμενα από ΦΠΑ</td>
   <td><select name="WOVAT">
      <option value="1">Ναί</option>
      <option value="2">Οχι</option>
      <option value="0" selected>Ολα</option>
      </select></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ερώτηση">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}   
//--------------------------------------
function usr_ask_login()
{
   if (@$_SESSION['FOR_ADMIN']) {
      $title="Σύνδεση Δημόσιας Διοίκησης";
      $leg2="";
      $nextFunc=15;
   }
   else if (@$_SESSION['FOR_MANUFACTURER']) {
      $title="Σύνδεση Εγκαταστάτη/ Κατασκευαστή";
      $leg2=" Taxis";
      $nextFunc=42;
   }
   else {
      $title="Σύνδεση Επιχείρησης";
      $leg2=" Taxis";
      $nextFunc=2;
   }
?>
<h1><?php echo $title; ?></h1>
<fieldset>
   <legend>Εγγεγραμμένος χρήστης<?php echo $leg2; ?></legend>
   
   <form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
   <input type=hidden name="FUNCTION" value="<?php echo $nextFunc; ?>">
   <table>
   <tr>
      <td>Ονομα χρήστη</td>
      <?php make_input('EMAIL', 150); ?>
   </tr>
   <tr>
      <td>Κωδικός πρόσβασης</td>
      <td><input type=password name="PASSWD">
         <!-- <a href="javascript:goTo(12)">Τον ξέχασα</a> --></td>
   </tr>
   <tr>
      <td></td>
      <td>
         <input type=submit value="Σύνδεση" class=bigButton>
         <input type=button value="Ακυρο" onclick="goTo(0)" class=bigButton>
      </td>
   </tr>
   <?php 
      if (!@$_SESSION['FOR_ADMIN']) {
         echo "<tr style=\"background-color:#FFFF99\">
            <td>Παρατήρηση</td>
            <td>Την πρώτη φορά που θα συνδεθείτε, η σύνδεση μπορεί να αργήσει. Παρακαλούμε περιμένετε.</td>
            </tr>";
      }
   ?>
   </table>
   </form>
</fieldset>
<?php
   print_footer();
}
//--------------------------------------
function taxis_get_afm($user)
{
   global $x2;
   $db=&$x2->db;

   $query="SELECT queries.username2afm(:UNAME) FROM dual";
   $stmt=$db->Prepare($query);
   $data=array('UNAME'=>$user);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return false;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row===false || empty($row[0])) {
      uerror("Δεν μπόρεσα να διαβάσω το ΑΦΜ του χρήστη!");
      return false;
   }
   $ar1=explode('=',$row[0]);
   if (count($ar1)<2 || $ar1[0]!=="AFM" || empty($ar1[1])) {
      uerror("Το ΑΦΜ για τον λογαριασμό δεν είναι ενεργό!");
      return false;
   }

   return $ar1[1];
}
//--------------------------------------
function taxis_get_eafdss($user, $afm=false)
{
   global $x2;
   $db=&$x2->db;
   $oret=new cTAXISRET($afm);
 
   if ($afm===false) {
      if (($afm=taxis_get_afm($user))===false)
         return false;
      else
         $oret->afm = $afm;
   }
   
   /* $query="SELECT * from TABLE(tameiakes.queries.GET_ACTIVE_SERIALNO_OF_OWNER(:AFM))"; */
   $query="SELECT * from TABLE(tameiakes.queries.GET_FHMORTAXI(:AFM))";
   $stmt = $db->Prepare($query); // no error check
   $data=array('AFM'=>$afm);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return false;
   }
   $nrec=0;
   while ($o1=$rs->FetchNextObject()) {
      $nrec++;
      $s11=gr_to_eng($o1->TAMEIAKH);
      if (!array_key_exists($s11, $oret->eafdss)) {
         $oret->eafdss[$s11] = array($o1->EAFDSS/*type*/, $s11/*serial*/);
      }
   }
   $rs->Close();
   
   echo "<!-- Count $nrec RECORDS -->";
   
     
   return $oret;  
}
//--------------------------------------
function fill_ese_vatno($userid, $oret)
{
   global $x2;
   $db=&$x2->db;

   //$query="SELECT COUNT(*) FROM ese_vatno WHERE EAFDSS=:EAFDSS"; // commented 9-3-2016
   $query="SELECT VATNO FROM ese_vatno WHERE EAFDSS=:EAFDSS";

   $query2="INSERT INTO ese_vatno (EAFDSS, MTYPE, AESKEY, VATNO, USERID)
         VALUES(:EAFDSS, :MTYPE, :AESKEY, :VATNO, :USERID)";

   $query3="UPDATE ese_vatno SET MTYPE=:MTYPE, AESKEY=:AESKEY, VATNO=:VATNO, USERID=:USERID
         WHERE EAFDSS=:EAFDSS";
   
   // for each eafdss returned from taxis, check if it already exists in ese_vatno; if not, insert it
   foreach ($oret->eafdss as $eaa) {
      $stmt = $db->Prepare($query); // no error check
      $data=array('EAFDSS'=>$eaa[1]); // s11
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      /* commented 9-3-2016
      if ($row[0]>0) // FHM already exists
         continue;
      */
      if ($row===false) {
         // Create missing FHM
         $stmt2 = $db->Prepare($query2); // no error check
         $aeskey=get_aeskey();
         $data=array('EAFDSS'=>$eaa[1], 'MTYPE'=>($eaa[0]==5?0:1), 'AESKEY'=>$aeskey, 'VATNO'=>$oret->afm, 'USERID'=>$userid);
         if (!$db->Execute($stmt2,$data)) {
            uerror( __LINE__.$db->ErrorMsg() );
            return false;
         }
      }
      else if ($row[0]!==$oret->afm) { 
         // update existing FHM
         $stmt3 = $db->Prepare($query3); // no error check
         $aeskey=get_aeskey();
         $data=array('EAFDSS'=>$eaa[1], 'MTYPE'=>($eaa[0]==5?0:1), 'AESKEY'=>$aeskey, 'VATNO'=>$oret->afm, 'USERID'=>$userid);
         if (!$db->Execute($stmt3,$data)) {
            uerror( __LINE__.$db->ErrorMsg() );
            return false;
         }
      }
   }
   
   // o.k.
   return true;
}
//--------------------------------------
function adm_verify_login()
{
   global $x2;
   $db=&$x2->db;        
   
   $ar1=array('EMAIL', 'PASSWD');
   if (!check_required($ar1)) {
      return home_page();
   } 
   
   $user=trim($_REQUEST['EMAIL']);

   $query="SELECT * FROM ese_user WHERE EMAIL=:EMAIL AND PASSWD5=:PASSWD5";
   $stmt=$db->Prepare($query);
   $pw5=md5($_REQUEST['PASSWD']);
   $data=array('EMAIL'=>$user, 'PASSWD5'=>$pw5 );
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return usr_ask_login();
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1===false) {
      uerror("Login failed!");
      return usr_ask_login();
   }
   
   if ($o1->ACTIVE!=1) {
      uerror("User account deactivated!");
      return usr_ask_login();
   }
   
   // o.k.:
   $_SESSION['USERID']   = $o1->USERID;
   $_SESSION['ULEVEL']   = $o1->ULEVEL; // possibly '1'
   $_SESSION['COMPANY']  = $o1->COMPANY;
   $_SESSION['FULLNAME'] = $o1->FULLNAME;
   $_SESSION['EMAIL']    = $user;
   $x2->read_session();
   
   after_login();
}
//--------------------------------------
function do_verify_login(&$user, &$company)
{
   if (empty($_REQUEST['EMAIL']) /* || $_REQUEST['EMAIL']!==$_REQUEST['PASSWD'] */) {
      uerror("Login failed!");
      return false;
   }

   $user=trim($_REQUEST['EMAIL']);
   $company="Unknown";

   if ($user!=='~inca' && $user!=='~taxcode' && $user!=='~elmi') {
      //
      // Connect to LDAP
      //
      $ldaphost = "ldap://xoid.gsis.gr";  // your ldap servers
      $ldapport = 389;                    // your ldap server's port number

      if (($ldapconn = ldap_connect($ldaphost/*, $ldapport*/))===false) {
         uerror("LDAP connection failed!");
         return false;
      }

      if (($result = @ldap_search( $ldapconn, "cn=Users, dc=gsis, dc=gr", "uid=$user" ))===false) {
         uerror("LDAP search failed!");
         ldap_close($ldapconn);
         return false;
      }

      if (($data = @ldap_get_entries($ldapconn, $result))===false) {
         uerror("LDAP get entries failed!");
         ldap_close($ldapconn);
         return false;
      }

      if (count($data)==0 || empty($data[0]['dn'])) {
         uerror("Login failed!");
         ldap_close($ldapconn);
         return false;
      }
      $userdn = $data[0]['dn'];

      $bret=@ldap_bind($ldapconn, $userdn, $_REQUEST['PASSWD']);
      ldap_unbind($ldapconn);

      if (!$bret) {
         uerror("Login failed!");
         return false;
      }

      if (isset($data[0]['sn'][0])) {
         $company=$data[0]['sn'][0];
      }
   }
   else {
      $company=$user;
   }

   return true;
}
//--------------------------------------
function maf_verify_login()
{
   global $x2;
   $db=&$x2->db;

   $user=null;
   $company=null;
   if (!do_verify_login($user,$company))
      return usr_ask_login();

   //
   // Create user if not exists
   //
   $query="SELECT USERID, COMPANY, VATNO FROM ese_user WHERE EMAIL=:EMAIL";
   $stmt=$db->Prepare($query);
   $data=array('EMAIL'=>$user);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return usr_ask_login();
   }
   $row=$rs->FetchRow();
   $rs->Close();

   if ($row===false) { // user does not exist in local database
      // get list of eafdss...
      if ($user==='~inca') {
         $afm='123456789';
      }
      else if (($afm=taxis_get_afm($user))===false) {
         return usr_ask_login();
      }

      // Always insert ULEVEL as '2'
      $query="INSERT INTO ese_user (ULEVEL, ACTIVE, EMAIL, COMPANY, VATNO) VALUES(2, 1, :EMAIL, :COMPANY, :VATNO)";
      $stmt=$db->Prepare($query);
      $data=array('EMAIL'=>$user, 'COMPANY'=>$company, 'VATNO'=>$afm);
      if (!$db->Execute($stmt,$data)) {
         uerror( __LINE__.$db->ErrorMsg() );
         return usr_ask_login();
      }

      $query="SELECT USERID FROM ese_user WHERE EMAIL=:EMAIL";
      $stmt = $db->Prepare($query); // no error check
      $data=array('EMAIL'=>$user);
      if (($rs=$db->Execute($stmt, $data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return usr_ask_login();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) {
         uerror( "Could not create User ID!" );
         return usr_ask_login();
      }

      $userid=$row[0];
   }
   else { // user exists in ese_user
      $userid = $row[0];

      if ($row[1]!==$company) {
         $query="UPDATE ese_user SET COMPANY=:COMPANY WHERE USERID=:USERID";
         $data=array('COMPANY'=>$company, 'USERID'=>$userid);
         if (!$db->Execute($query,$data)) {
            uerror( __LINE__.$db->ErrorMsg() );
            return usr_ask_login();
         }
      }

      $afm = $row[2];
   }

   // Check ese_service
   if ($user!=='~inca') {
      $query="SELECT COUNT(*) FROM ese_service WHERE SERVICE_AFM=:AFM";
      $stmt=$db->Prepare($query);
      $data=array('AFM'=>$afm);
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return usr_ask_login();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if (@$row[0]==0) {
         uerror( "Το ΑΦΜ δεν ανήκει σε κατασκευαστή!" );
         return usr_ask_login();
      }
   }

   // o.k.:
   $_SESSION['USERID']   = $userid;
   $_SESSION['USERAFM']  = (string)$afm;
   $_SESSION['ULEVEL']   = 4; // manufacturer
   $_SESSION['COMPANY']  = $company;
   $_SESSION['FULLNAME'] = 'ΑΦΜ '.$afm;

   $_SESSION['EMAIL']    = $user;
   $x2->read_session();

   after_login();
}
//--------------------------------------
function usr_verify_login()
{
   global $x2;
   $db=&$x2->db;

   $user=null;
   $company=null;
   if (!do_verify_login($user,$company))
      return usr_ask_login();

   //
   // Create user if not exists
   //
   $query="SELECT USERID, COMPANY, VATNO FROM ese_user WHERE EMAIL=:EMAIL";
   $stmt=$db->Prepare($query);
   $data=array('EMAIL'=>$user);
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return usr_ask_login();
   }
   $row=$rs->FetchRow();
   $rs->Close();
   
   $oret=false;
   
   if ($row===false) { // user does not exist in local database
      // get list of eafdss...
      if ($user==='~inca') {
         $oret=new cTAXISRET('123456789');
         $oret->eafdss=array(
            array(5, 'EKI03000001'),
            array(5, 'FBG88000004')
         );
      } 
      else if (($oret=taxis_get_eafdss($user))===false) { // all s11 returned are LATIN
         return usr_ask_login();
      }
      
      $query="INSERT INTO ese_user (ULEVEL, ACTIVE, EMAIL, COMPANY, VATNO) VALUES(2, 1, :EMAIL, :COMPANY, :VATNO)";
      $stmt=$db->Prepare($query);
      $data=array('EMAIL'=>$user, 'COMPANY'=>$company, 'VATNO'=>$oret->afm);
      if (!$db->Execute($stmt,$data)) {
         uerror( __LINE__.$db->ErrorMsg() );
         return usr_ask_login();
      }
      
      $query="SELECT USERID FROM ese_user WHERE EMAIL=:EMAIL";
      $stmt = $db->Prepare($query); // no error check
      $data=array('EMAIL'=>$user);
      if (($rs=$db->Execute($stmt, $data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return usr_ask_login();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) {
         uerror( "Could not create User ID!" );
         return usr_ask_login();
      }
      
      $userid=$row[0];
      
      if (count($oret->eafdss)==0) {
         umessage("Δεν υπάρχουν δηλωμένες ΕΑΦΔΣΣ ή Ταμειακές!");
      }
      else if (!fill_ese_vatno($userid, $oret))
         return usr_ask_login();
   }
   else { // user exists in ese_user
      $userid = $row[0];
      
      if ($row[1]!==$company) {
         $query="UPDATE ese_user SET COMPANY=:COMPANY WHERE USERID=:USERID";
         $data=array('COMPANY'=>$company, 'USERID'=>$userid);
         if (!$db->Execute($query,$data)) {
            uerror( __LINE__.$db->ErrorMsg() );
         }
      }
      
      $query="SELECT VATNO FROM ese_vatno WHERE USERID=:USERID";
      $data=array('USERID'=>$userid);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror( __LINE__.' '.$db->ErrorMsg() );
         return usr_ask_login();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) { // no eafdss found
         if ($user==='~inca') {
            $oret=new cTAXISRET('123456789');
            $oret->eafdss=array(
               array(5, 'EKI03000001'),
               array(5, 'FBG88000004')
            );
         }
         else if (($oret=taxis_get_eafdss($user))===false) {
            return usr_ask_login();
         }
         
         fill_ese_vatno($userid, $oret);
      }
      else {
         $oret=new cTAXISRET($row[0]);
      }
   }
   
   // o.k.:
   $_SESSION['USERID']   = $userid;
   $_SESSION['USERAFM']  = (string)@$oret->afm;
   $_SESSION['ULEVEL']   = 2; // end user
   $_SESSION['COMPANY']  = $company;
   $_SESSION['FULLNAME'] = 'ΑΦΜ '.(@$oret->afm);
   
   $_SESSION['EMAIL']    = $user;
   $x2->read_session();
   
   after_login();
}
//--------------------------------------
function after_login()   
{
   switch (@$_SESSION['ULEVEL']) 
   {
   case 0: // super user
   case 1: // admin
   case 3: // checker
      adm_after_login();
      break;
   case 2: // user
      usr_after_login();
      break;
   case 4: // manufacturer
      maf_after_login();
      break;
   }
}
//--------------------------------------
function adm_after_login()
{
   global $x2;
   
   if (empty($x2->USERID) || $x2->ULEVEL==2) { // precaution 
      return home_page();
   }
   
   // header
   umessage("Καλωσήλθατε $x2->COMPANY");
   
   // contents
   echo "<ul>                                            
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=104\">Αλλαγή password</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=101\">ΕΑΦΔΣΣ και Ταμειακές</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=500\">Χρήστες</a><br>
         &nbsp;</li>";
         
   if ($x2->ULEVEL!=3) {
      echo "<li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=150\">Υποβολή E.TXT για έλεγχο</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=160\">Υπολογισμός SHA1 από άλλες υπογραφές SHA1</a><br>
         &nbsp;</li>";
   }
   
   echo "<li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=110\">Υποβληθέντα αρχεία S.TXT</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=114\">Ανεύρεση κινήσεων</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=140\">Καταγραφές υποβολών αρχείων S.TXT</a><br>
      &nbsp;</li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=170\">Report ΦΠΑ</a></li>
      </ul>";
//      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=179\">Καταστάσεις ΜΥΦ</a></li>
      
   if ($x2->EMAIL==='inca@incahellas.com') {
      echo "<hr>Developer:<ul>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=506\">Ldap Info</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=508\">Convert LOG to Greek</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=509\">Correct HMERA</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=510\">Correct Z_ and U_ fields</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=515\">Περιεχόμενο καταλόγου</a></li>
         <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=511\">Execute SQL</a></li>
         <li><a href=\"esend2.php?FUNCTION=99\" target=info>Php Info</a></li>
         </ul>";
   }
      
   print_footer();
}
//--------------------------------------
function maf_after_login()
{
   global $x2;

   if (empty($x2->USERID) || $_SESSION['ULEVEL']!=4) { // precaution
      return home_page();
   }

   // header
   umessage("Καλωσήλθατε $x2->COMPANY");

   echo "<fieldset><legend>Εργασίες</legend>
      <ul>
      <li><a href=\"javascript:goTo(43)\">Επιθεώρηση παρτίδας σφράγισης και αγοράς ΦΗΜ. Επιθεώρηση παρτίδας σφράγισης ΑΔΗΜΕ ταξιμέτρων</a></li>
      <li><a href=\"javascript:goTo(45)\">Εισαγωγή σφράγισης παρτίδας ΦΗΜ, ή ΑΔΗΜΕ ταξιμέτρων</a></li>
      <li><a href=\"javascript:goTo(49)\">Υποβολή Τεχνικής Αναφοράς βλάβης φορολογικής μνήμης ΦΗΜ χωρίς αντικατάσταση μνήμης. (όχι ΑΔΗΜΕ ταξιμέτρων) </a></li>
      <li><a href=\"javascript:goTo(51)\">Επιθεώρηση υποβληθέντων Τεχνικών Αναφορών βλάβης φορολογικής μνήμης ΦΗΜ </a></li>
      <li><a href=\"javascript:goTo(53)\">Υποβολή Τεχνικής Αναφοράς Βλάβης φορολογικής μνήμης ΦΗΜ που απεστάλη σε χάρτινη μορφή στο τμήμα Ταμειακών Μηχανών της Δ15-ΔΥΠΗΛΥ (όχι ΑΔΗΜΕ ταξιμέτρων) </a></li>
      <li><a href=\"javascript:goTo(63)\">Υποβολή Τεχνικής Αναφοράς Βλάβης φορολογικής μνήμης ΦΗΜ με ταυτόχρονη αντικατάσταση μνήμης - Υποβολή ΕΚΠΡΟΘΕΣΜΗΣ βλάβης φορολογικής μνήμης.  (όχι ΑΔΗΜΕ ταξιμέτρων) </a></li>
      <li><a href=\"javascript:goTo(55)\">Αναζήτηση Τεχνικής Αναφοράς βλάβης φορολογικής μνήμης ΦΗΜ </a></li>
      </ul>
      </fieldset>";



   print_footer();
}
//--------------------------------------
function usr_after_login()   
{
   global $x2;
   
   if (empty($x2->USERID) || $_SESSION['ULEVEL']!=2) { // precaution 
      return home_page();
   }
      
   // header
   umessage("Καλωσήλθατε $x2->COMPANY");
   
   // contents
   echo "<fieldset><legend>Ρυθμίσεις</legend>
      <ul>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=101\">ΕΑΦΔΣΣ και Ταμειακές</a></li>
      </ul></fieldset>";
//       <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=18\">Στοιχεία ΜΥΦ</a></li>
   
   echo "<fieldset><legend>Εργασίες</legend>
      <ul>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=120\">Υποβολή ENCRYPTED S.TXT</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=130\">Υποβολή S.TXT unencrypted</a><br>
      &nbsp;</li>
      <!--
      <li><a href=\"".$_SERVER['PHP_SELF']."?FUNCTION=132\">Καταχώριση χειρόγραφων</a><br>
      &nbsp;</li>
      -->
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=110\">Υποβληθέντα αρχεία S.TXT</a></li>";
      //<li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=114\">Ανεύρεση κινήσεων</a></li>
   echo "<li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=170\">Report ΦΠΑ</a></li>
      </ul>
      </fieldset>";
//       <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=180\">Καταστάσεις ΜΥΦ</a></li>
//      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=198\">Καταχώρηση χειρόγραφου παραστατικού</a></li>
   
   echo "<fieldset><legend>Βοηθητικά</legend>
      <ul>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=150\">Υποβολή E.TXT για έλεγχο</a><br></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=160\">Υπολογισμός SHA1 από άλλες υπογραφές SHA1</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=140\">Καταγραφές υποβολών αρχείων S.TXT</a></li>
      </ul></fieldset>";
   
   /* echo "<fieldset><legend>Δηλώσεις έναρξης - παύσης ΦΗΜ </legend>
      <ul>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=800\">Επιθεώρηση υποβολών έναρξης-παύσης ΦΗΜ</a><br></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=801\">Δήλωση ακύρωσης προηγούμενης έναρξης ΦΗΜ (κωδ.99)</a></li>
      <li><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=802\">Δήλωση ακύρωσης προηγούμενης παύσης ΦΗΜ (κωδ.99) </a></li>
      </ul></fieldset>";    */
      
      
?>
<fieldset style="padding:10px;">
<legend>Βοήθεια</legend>
   <p>
      Πρώτα ρυθμίστε τις <i>ΕΑΦΔΣΣ και Ταμειακές</i>, μετά δοκιμάστε τις παρακάτω URL.
   </p>
   <p>
      Το σύστημα θα σας παρέχει τα κλειδιά για κάθε ΕΑΦΔΣΣ ή Ταμειακή.<br> 
      <!-- Το πρόγραμμά σας θα πρέπει να μπορεί να λειτουργεί <b>και στις δύο URL.</b> -->
   </p>
         
   <ul>
      <li style="background-color:#FFFF99">URL για αποστολή (άμεση): http://tam.gsis.gr/eafdss/myweb/websend.php</li>
      <!--
      <li>URL για αποστολή <span style="color:red">με ανακατεύθυνση</span>: 
         http://<?php echo $_SERVER["HTTP_HOST"]; ?>/myweb/webredir.php</li>
      -->
   </ul>
   
   <p>
      Για διευκόλυνσή σας μπορείτε επίσης να αποστείλετε, χειροκίνητα, αρχεία S.TXT για έλεγχο περιεχομένου.
   </p>
   
   <p>
      Αφού στείλετε ένα αρχείο S.TXT, μπορείτε να δείτε το αποτέλεσμα μέσω του  
      <i>Αρχείου καταγραφής</i>.<br>
      Προσοχή: το <i>Αρχείο καταγραφής</i> ενδέχεται να αναφέρεται και σε ενέργειες άλλων χρηστών, εφόσον δεν είναι
      ολοκληρωμένες, όχι μόνο στις δικές σας.
    </p>
    
    <p>
      Για να ξαναελέγξετε ένα αρχείο S.TXT, ενώ εμφανίζεται, κάντε κλικ στην εγγραφή και επιλέξτε 
      [Επανέλεγχος].
    </p>
    
   <p>
      Αφού υποβληθεί ένα αρχείο S.TXT, ο κάθε <i>Συναλασσόμενος</i> που αναφέρεται σ αυτό, 
      μπορεί να ελέγξει με βάση την ψηφιακή υπογραφή, το συνδεμένο παραστατικό.</p> 
   </ul>
</fieldset>
<?php
}
//--------------------------------------
function set_new_pass()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=array('PASSWD', 'PASSWD2');
   if (!check_required($ar1))
      return home_page();
   
   $passwd=trim($_REQUEST['PASSWD']);
   
   if ($passwd!==trim($_REQUEST['PASSWD'])) {
      userror("Λάθος στην επιβεβαίωση password!");
      return ask_new_pass();
   }
   
   if (mb_strlen($passwd)<6) {
      uerror("Insufficient password!");
      return ask_new_pass();
   }
   
   $query="UPDATE ese_user SET PASSWD5=:PASSWD5 WHERE EMAIL=:EMAIL";
   $data=array('PASSWD5'=>md5($passwd), 'EMAIL'=>$x2->EMAIL);
   if (!$db->Execute($query,$data)) {
      uerror($db->ErrorMsg());
      return ask_new_pass();
   }
   
   umessage("Password reset!");
   logout();
}
//--------------------------------------
function ask_new_pass()
{
?>
<script>
function checkForm()
{
   if (document.goForm.PASSWD.value==document.goForm.PASSWD2.value) {
      return true;
   } 
   else {
      window.alert('Το password δεν συμφωνεί!');
      return false;
   }
}
</script>
<h1>Αλλαγή password</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm" onsubmit="return checkForm();">
<input type=hidden name="FUNCTION" value="105">
<table>
<tr>
   <td>Νέο password</td>
   <td><input type=password name="PASSWD">(τουλάχιστο 6 χαρακτήρες, μόνο λατινικοί παρακαλώ)</td>
</tr>
<tr>
   <td>Επιβεβαίωση</td>
   <td><input type=password name="PASSWD2"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ενημέρωση">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------
function upd_myf_crede()
{
   global $x2;
   $db=&$x2->db;
   
   $userid=(int)$_SESSION['USERID'];
   $query="UPDATE ese_user SET MYFUSERID=:MYFUSERID, MYFPASSWD=:MYFPASSWD WHERE USERID=:USERID AND ULEVEL=2";
   $data=array( 'MYFUSERID'=>$_REQUEST['MYFUSERID'], 'MYFPASSWD'=>$_REQUEST['MYFPASSWD'], 'USERID'=>$userid );
   if (!$db->Execute($query,$data)) 
      uerror(__LINE__.':: '.$db->ErrorMsg());
}
//--------------------------------------
function ask_myf_crede()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Ψευδοκωδικοί - token ΜΥΦ</h1>";
   
   $userid=(int)$_SESSION['USERID'];
   $query="SELECT MYFUSERID FROM ese_user WHERE USERID=:USERID AND ULEVEL=2";
   $data=array('USERID'=>$userid );
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login(); 
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1===false) {
      uerror("Δεν βρέθηκε ο χρήστης με ID $userid ή δεν υπάρχει δικαίωμα μεταβολής!");
      return after_login();
   }
   
   echo "<form action=\"".myhtml($_SERVER['PHP_SELF'])."\" method=POST name=\"goForm\">
      <input type=hidden name=\"FUNCTION\" value=\"19\">
      <table>
      <tr>
      <td>ΜΥΦ Κωδικός Εισόδου</td>
      <td><input type=text name=\"MYFUSERID\" value=\"".myhtml($o1->MYFUSERID)."\"></td>
      </tr>
      <tr>
      <td>ΜΥΦ Συνθηματικό</td>
      <td><input type=password name=\"MYFPASSWD\"></td>
      </tr>
      <tr>
      <td></td>
      <td>
         <input type=submit class=bigButton value=\"Ενημέρωση\">
         <input type=button class=bigButton value=\"Ακυρο\" onclick=\"goTo(6)\">
      </td>
      </tr>
      </table>
      </form>
      <fieldset style=\"padding:10px;\">
      <legend>Υπενθύμιση</legend>
      Εκδοση ψευδοκωδικών-token για τον υπόχρεο (για τα νοµικά πρόσωπα πρέπει να µπει ο 
      νόµιµος εκπρόσωπος και να αναλάβει τον ανάλογο ρόλο) από την εφαρµογή:<br>
      <a href=\"https://www1.gsis.gr/sgsisapps/tokenservices\" 
      target=\"gsis\">https://www1.gsis.gr/sgsisapps/tokenservices</a>
      </fieldset>";
   
   print_footer();
}
//--------------------------------------
function ask_edit_usr($err=false)
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL!=0) // precaution
      return;
      
   $userid=(int)$_REQUEST['RECORDID'];
      
   $query="SELECT * FROM ese_user WHERE USERID=:USERID AND (ULEVEL=0 OR ULEVEL=1)";
   $data=array('USERID'=>$userid);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return after_login(); 
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1===false) {
      uerror("Δεν βρέθηκε ο χρήστης με ID $userid ή δεν υπάρχει δικαίωμα μεταβολής!");
      return after_login();
   }
?>
<h1>Διόρθωση στοιχείων χρήστη Δημόσιας Διοίκησης</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="17">
<input type=hidden name="USERID" value="<?php echo $userid; ?>">
<table>
<tr>
   <td>Username (email)</td>
   <td><?php echo myhtml($o1->EMAIL); ?></td>
</tr>
<tr>
   <td>Password</td>
   <td><input type=password name="PASSWD">(minimum 6 chars., latin only please) 
      <span style="color:red;font-weight:bold;">Συμπληρώστε μόνο αν θέλετε να το αλλάξετε</span></td>
</tr>
<tr>
   <td>Full name</td>
   <?php make_input('FULLNAME', 200, $o1->FULLNAME); ?>
</tr>
<tr>
   <td>Company name</td>
   <?php make_input('COMPANY', 200, $o1->COMPANY); ?>
</tr>
<tr>
   <td>Address</td>
   <?php make_input('ADDRESS1', 200, $o1->ADDRESS1); ?>
</tr>
<tr>
   <td>Address (continue)</td>
   <?php make_input('ADDRESS2', 200, $o1->ADDRESS2); ?>
</tr>
<tr>
   <td>City</td>
   <?php make_input('CITY', 50, $o1->CITY); ?>
</tr>
<tr>
   <td>State</td>
   <?php make_input('STATE', 50, $o1->STATE); ?>
</tr>
<tr>
   <td>ZIP code</td>
   <?php make_input('ZIP', 50, $o1->ZIP); ?>
</tr>
<tr>
   <td>Country</td>
   <?php make_input('COUNTRY', 50, $o1->COUNTRY); ?>
</tr>
<tr>
   <td>Phone(s)</td>
   <?php make_input('PHONES', 100, $o1->PHONES); ?>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit value="Ενημέρωση">
      <button type=button onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<?php
   print_footer();
}
//--------------------------------------
function ask_register($err=false)
{
   global $x2;
   
   if ($x2->ULEVEL!=0) // precaution
      return;
?>
<h1>Εγγραφή νέου χρήστη Δημόσιας Διοίκησης</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="4">
<table>
<tr>
   <td>Username (email)</td>
   <?php make_input('EMAIL', 150); ?>
</tr>
<tr>
   <td>Password</td>
   <td><input type=password name="PASSWD">(minimum 6 chars., latin only please)</td>
</tr>
<tr>
   <td>Full name</td>
   <?php make_input('FULLNAME', 200); ?>
</tr>
<tr>
   <td>Company name</td>
   <?php make_input('COMPANY', 200, 'ΓΓΠΣ'); ?>
</tr>
<tr>
   <td>Address</td>
   <?php make_input('ADDRESS1', 200); ?>
</tr>
<tr>
   <td>Address (continue)</td>
   <?php make_input('ADDRESS2', 200); ?>
</tr>
<tr>
   <td>City</td>
   <td>
      <?php make_input_int('CITY', 50, 'ΑΘΗΝΑ'); ?><input 
         type=button value="..." onclick="ac_open('CITY', 'STATE')">
   </td>
</tr>
<tr>
   <td>State</td>
   <td>
      <?php make_input_int('STATE', 50, 'ΑΤΤΙΚΗ'); ?><input 
         type=button value="..." onclick="ac_open('STATE', 'CITY')">
   </td>
</tr>
<tr>
   <td>ZIP code</td>
   <?php make_input('ZIP', 50); ?>
</tr>
<tr>
   <td>Country</td>
   <?php make_input('COUNTRY', 50, 'ΕΛΛΑΔΑ'); ?>
</tr>
<tr>
   <td>Phone(s)</td>
   <?php make_input('PHONES', 100); ?>
</tr>
<tr>
   <td><b>Level</b></td>
   <td><select name=ULEVEL>
      <option value="3">Ελεγκτής Δημόσιας Διοίκησης</option>
      <option value="1">Administrator</option>
      <option value="0">Super user</option>
      </select></td>
</tr>
<tr>
   <td></td>
   <td>
      <div style="color:red">All fields are required.</div>
      Please <span class=ASTERISK>double check your email</span>, because we may use it to communicate with you.<br>
      <input type=submit value="Εγγραφή">
      <button type=button onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>
<script>

var cities=['ΑΘΗΝΑ', 'ΘΕΣΣΑΛΟΝΙΚΗ'];
var states=['ΑΤΤΙΚΗΣ', 'ΘΕΣΣΑΛΟΝΙΚΗΣ'];

$( document.goForm.CITY ).autocomplete({
      source: cities, minLength:0
    });
    
$( document.goForm.STATE ).autocomplete({
      source: states, minLength:0
    });

function ac_open(f1, f2) 
{
   $(document.goForm[f1]).val('');
   $(document.goForm[f1]).autocomplete('search');
   $(document.goForm[f2]).autocomplete('close');
}   
</script>
<?php
   //print_footer();
}
//--------------------------------------
function process_edit_user()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=array('COMPANY', 'FULLNAME', 'ADDRESS1', 'ADDRESS2', 'CITY', 'STATE', 'ZIP', 'COUNTRY', 'PHONES', 'PASSWD');
   if (!check_required($ar1)) {
      return;
   }
   
   $userid=(int)$_REQUEST['USERID'];
                             
   $data=array(
      'COMPANY'  => trim($_REQUEST['COMPANY']),
      'FULLNAME' => trim($_REQUEST['FULLNAME']),
      'ADDRESS1' => trim($_REQUEST['ADDRESS1']),
      'ADDRESS2' => trim($_REQUEST['ADDRESS2']),
      'CITY'     => trim($_REQUEST['CITY']),
      'STATE'    => trim($_REQUEST['STATE']),
      'ZIP'      => trim($_REQUEST['ZIP']),
      'COUNTRY'  => trim($_REQUEST['COUNTRY']),
      'PHONES'   => trim($_REQUEST['PHONES']),
      'USERID'   => $userid
      );
   $query="UPDATE ese_user SET COMPANY=:COMPANY, FULLNAME=:FULLNAME, ADDRESS1=:ADDRESS1, 
      ADDRESS2=:ADDRESS2, CITY=:CITY, STATE=:STATE, ZIP=:ZIP, COUNTRY=:COUNTRY, PHONES=:PHONES";
   $passwd=trim($_REQUEST['PASSWD']);
   if (!empty($passwd)) {
      $query .= ", PASSWD5=:PASSWD5 ";
      $data['PASSWD5']=md5($passwd);
   }
   $query .= " WHERE USERID=:USERID AND (ULEVEL=0 OR ULEVEL=1)";
   if (!$db->Execute($query,$data)) {
      uerror(__LINE__.$db->ErrorMsg());
   } 
}
//--------------------------------------
function process_register()
{
   global $x2;
   $db=&$x2->db;
   
   $emsg=false;
   do {
      $email = trim(@$_REQUEST['EMAIL']);
      if (empty($email)) {
         $emsg='Email empty!';
         break;
      }

      // Check if already exists      
      $query = "SELECT COUNT(*) FROM ese_user WHERE EMAIL=:EMAIL";
      $data=array('EMAIL'=>$email);
      if (($rs=$db->Execute($query,$data))===false) {
         $emsg = __LINE__.$db->ErrorMsg();
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row[0]>0) {
         $emsg="User [$email] already in database!";
         break;
      }
   
      // Check email syntax
      $emsg='Email syntax error!';
      $ar1=explode('@',$email);
      if (count($ar1)<2 || empty($ar1[0])) {
         break;
      }
      
      $ar2=explode('.', $ar1[1]);
      if (count($ar2)<2 || empty($ar2[0]) || empty($ar2[1])) {
         break;
      }
      // end of email checks
      $emsg=false;
      
      $passwd = trim($_REQUEST['PASSWD']);
      if (mb_strlen($passwd)<6) {
         $emsg="Insufficient password!";
         break;
      } 
      
      $fullname=trim( $_REQUEST['FULLNAME'] );
      if (empty($fullname)) {
         $emsg="Empty Fullname!";
         break;
      }
      
      $company=trim( $_REQUEST['COMPANY'] );
      if (empty($company)) {
         $emsg="Empty Company name!";
         break;
      }
      
      $phones=trim( $_REQUEST['PHONES'] );
      if (empty($phones)) {
         $emsg="No phones!";
         break;
      }
      
      $rhash='';
      for ($i=0;$i<40;$i++) {
         $j=mt_rand(0,34);
         $rhash .= chr($j<=25 ? 97+$j: $j-26+49); 
      }
      
      $data= array(
         'ULEVEL' => (int)$_REQUEST['ULEVEL'],  
         'RHASH' => $rhash,
         'ACTIVE' => 1,
         'COMPANY' => $company,
         'FULLNAME' => $fullname,
         'EMAIL' => $email,
         'PASSWD5' => md5($passwd),
         'ADDRESS1' => trim($_REQUEST['ADDRESS1']),
         'ADDRESS2' => trim($_REQUEST['ADDRESS2']),
         'CITY' => trim($_REQUEST['CITY']),
         'STATE' => trim($_REQUEST['STATE']),
         'ZIP' => trim($_REQUEST['ZIP']),
         'COUNTRY' => trim($_REQUEST['COUNTRY']),
         'PHONES' => $phones
         );
         
      if (!InsertEx($db, 'ese_user', $data)) {
         $emsg = __LINE__.$db->ErrorMsg();
         break;
      }
      
      GoBack();
      
   } while (false);
   
   if (!empty($emsg)) {
      uerror($emsg);
      return ask_register();
   }   
}
//--------------------------------------
function re_activate()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Re-Activate user</h1>";
   
   prepare_zend();
   
   $email=trim(@$_REQUEST['EMAIL']);
   
   $query="SELECT USERID, ACTIVE, RHASH FROM ese_user WHERE EMAIL=:EMAIL";
   $data=array('EMAIL'=>$email);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1==false) {
      uerror("Login failed!");
      echo "<p><a href=\"".myhtml($_SERVER['PHP_SELF'])."\">Return Home</a></p>";
      return;
   }
   
   if ($o1->ACTIVE) {
      umessage("Your account is already active!");
      echo "<p><a href=\"".myhtml($_SERVER['PHP_SELF'])."\">Return Home</a></p>";
      return;
   }
   
   $txt="This is an automated email. Please do not answer.\n\n".
      "Your registration to Test E-Send has been accepted.\n". 
      "To complete your registration, please follow this link:\n".
      "http://".$_SERVER['SERVER_NAME'].myhtml($_SERVER['PHP_SELF'])."?FUNCTION=9&USERID=".$o1->USERID."&RHASH=".$o1->RHASH;
   //mail($email, 'Registration to E-Send', $txt);
   $mail = new Zend_Mail('UTF-8');
   $mail->addTo($email);
   $mail->setSubject("Registration to E-Send");
   $mail->setBodyText($txt);
   
   try {
      $mail->Send();
      umessage( "To complete your registration, please check your 
         email in a minute or so, and follow directions.");
   }
   catch (Exception $e1) {
      umessage("Email error: ".$e1);
   }
   
   echo "<p><a href=\"".myhtml($_SERVER['PHP_SELF'])."\">Return Home</a></p>";
}
//--------------------------------------
function activate_user()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL!=0) // precaution
      return;
   
   $query="UPDATE ese_user SET ACTIVE = 1-ACTIVE WHERE USERID=:USERID";
   $data=array('USERID'=>$_REQUEST['RECORDID']);
   if (!$db->Execute($query,$data)) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
}
//--------------------------------------
function end_usr_show_fhm()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Ερώτημα τελικού χρήστη</h1>";

   $b2=false;
   if (empty($_SESSION['VCODEC']) || $_SESSION['VCODEC']!=@$_REQUEST['VCODE']) {
      uerror("Δεν συμφωνεί ο κωδικός επιβεβαίωσης, επαναλάβετε!");
   }
   else {
      $query="INSERT INTO ese_query_log (FUNC, COUNTER) VALUES (21, 0)";
      $stmt=$db->Prepare($query);
      $db->Execute($stmt);

      $query="UPDATE ese_query_log SET COUNTER = COUNTER + 1 WHERE FUNC=21";
      $stmt=$db->Prepare($query);
      $db->Execute($stmt);

      switch ($_REQUEST['WHAT'])
      {
      case 1:
         end_user_qry3();
         break;
      case 2:
         end_usr_qry_model();
         break;
      case 3:
         end_usr_qry_serial();
         $b2=true;
         break; 
      case 4:
         end_user_katagelia(); 
         break; 
      }
   }

   if ($b2)
      echo "<div id=tbar2>";
   else
      echo "<div><br>";
?>
   <button type=button class=bigButton onclick="goTo(20)">Νέα ερώτηση</button>
   <button type=button class=bigButton onclick="goTo(0)">Ακυρο</button>
</div>   
<?php
}
//--------------------------------------
function end_user_qry()
{
   echo "<h1>Ερώτημα τελικού χρήστη</h1>";
   
   if (empty($_SESSION['VCODEC']) || $_SESSION['VCODEC']!=@$_REQUEST['VCODE']) {
      uerror("Δεν συμφωνεί ο κωδικός επιβεβαίωσης, επαναλάβετε!");
   }
   else {
      end_user_qry2();
   }
?>
<div>
   <hr>
   <button type=button class=bigButton onclick="goTo(10)">Νέα ερώτηση</button>
   <button type=button class=bigButton onclick="goTo(0)">Ακυρο</button>
</div>   
<?php
}
//--------------------------------------
function end_user_show_sig($o1)
{
   global $x2;
?>
<table id=TT>
<tr>
   <td>Z</td>
   <td><?php echo myhtml($o1->ZNR); ?></td>
</tr>
<tr>
   <td>Ημερήσιος α/α</td>
   <td><?php echo myhtml($o1->DAILY); ?></td>
</tr>
<tr>
   <td>Προοδευτικός α/α</td>
   <td><?php echo myhtml($o1->PROGRESSIVE); ?></td>
</tr>
<tr>
   <td>ΑΦΜ εκδότη</td>
   <td><?php echo myhtml($o1->ISSUER_AFM); ?></td>
</tr>
<tr>
   <td>ΑΦΜ λήπτη</td>
   <td><?php echo myhtml($o1->RECV_AFM); ?></td>
</tr>
<tr>
   <td>ΦΗΜ</td>
   <td><?php echo myhtml($o1->EAFDSS); ?></td>
</tr>
<tr>
   <td>Κάρτα αποδείξεων</td>
   <td><?php echo myhtml($o1->KARTAPOD); ?></td>
</tr>
<tr>
   <td>Παραστατικό</td>
   <td colspan=5><?php echo myhtml($o1->DOCID."# ".$x2->doc_name($o1->DOCID)); ?></td>
</tr>
<tr>
   <td>Σειρά/Αριθμός</td>
   <td><?php echo myhtml($o1->SEIRA); ?></td>
   <td><?php echo myhtml($o1->DOCNR); ?></td>
</tr>
<tr>
   <td colspan=6><hr></td>
</tr>
<tr align=right>
   <td>Καθαρή αξία A/Β/Γ/Δ/Ε</td>
   <td><?php echo myhtml($o1->NETVALA); ?></td>
   <td><?php echo myhtml($o1->NETVALB); ?></td>
   <td><?php echo myhtml($o1->NETVALC); ?></td>
   <td><?php echo myhtml($o1->NETVALD); ?></td>
   <td><?php echo myhtml($o1->NETVALE); ?></td>
</tr>
<tr align=right>
   <td>Αξία ΦΠΑ Α/Β/Γ/Δ</td>
   <td><?php echo myhtml($o1->VATVALA); ?></td>
   <td><?php echo myhtml($o1->VATVALB); ?></td>
   <td><?php echo myhtml($o1->VATVALC); ?></td>
   <td><?php echo myhtml($o1->VATVALD); ?></td>
</tr>
<tr align=right>
   <td>Γενικό σύνολο</td>
   <td><b><?php echo myhtml($o1->GTOTAL); ?></b></td>
</tr>
<tr>
   <td colspan=6><hr></td>
</tr>
<tr>
   <td>Κωδ. νομίσματος</td>
   <td><?php echo myhtml($o1->CURCODE."# ".$x2->currency_name($o1->CURCODE)); ?></td>
</tr>
<tr>
   <td>Αρθρο απαλλαγής ΦΠΑ</td>
   <td><?php echo myhtml($o1->ARTHRO_FPA); ?></td>
</tr>
<tr>
   <td>Παρακράτηση φόρου</td>
   <td><?php echo myhtml($o1->PARAKRATISI_FOROU); ?></td>
</tr>
</table>
<script>
$("#TT tr:even").css("background-color", "#e9e9e9");
</script>
<?php   
}
//--------------------------------------
function end_usr_qry_serial()
{
   global $x2;
   $db=&$x2->db;

   $nrec = 0;
   $vatown = $_REQUEST['VATOWN'];
   $branch = (int)$_REQUEST['BRANCH'];
   $query="SELECT * from TABLE(tameiakes.queries.GET_FHM_OF_OWNER_AND_BRANCH(:VATOWN, :BRANCH))";
   $data=array('VATOWN'=>$vatown, 'BRANCH'=>$branch);
   $stmt = $db->Prepare($query); // no error check
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return false;
   }
   umessage( "Στοιχεία  για τον ΑΦΜ $vatown, υποκατάστημα $branch" );

   $gr1=new cXRID('grid18');

   array_push( $gr1->cols,
		array( 'Σειριακός', 120),
      array( 'Μοντέλο', 120)
   );

   while ($row=$rs->FetchRow()) {
      $row1 = array(
         myhtml($row[0]),
         myhtml($row[1])
         );
      $gr1->rows[] = $row1;
   }
   $rs->Close();

   if (count($gr1->rows)==0) {
      uerror("Δεν βρέθηκαν στοιχεία");
   }
   else {
      $gr1->play();
   }
}
//--------------------------------------
function end_usr_qry_model()
{
   global $x2;
   $db=&$x2->db;
   
   $model=false;
   $egrisi = (int)$_REQUEST['EGRISI'];
   $query="SELECT * from TABLE(tameiakes.queries.GET_FHM_MODEL(:EGRISI))";
   $data=array('EGRISI'=>$egrisi);
   $stmt = $db->Prepare($query); // no error check
   if (($rs=$db->Execute($stmt,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return false;
   }
   if ($row=$rs->FetchRow()) {
      $model=$row[0];
   }
   $rs->Close();
   
   if (empty($model)) {
      uerror("Δεν βρέθηκε το μοντέλο για τον α/α έγκρισης $egrisi");
   }
   else {
      umessage( "Το μοντέλο του α/α έγκρισης $egrisi είναι:" );
      echo "<div style=\"font-weight:bold\">";
      echo myhtml($model);
      echo "</div>";
   }
}

//--------------------------------------
function end_user_qry3()
{
   if (($afm = do_end_user_qry3($msg))===false) {
      uerror($msg);
   }
   else {
      umessage( $msg );
      echo "<div style=\"font-weight:bold\">";
      foreach ($afm as $v1) {
         echo myhtml($v1)." ";
      }
      echo "</div>";
   }
}
//--------------------------------------

//--------------------------------------
function end_user_katagelia()
{
   global $x2;
   $db=&$x2->db;
   
   $afm111=array();
   $eidos_fhm=5;
   /* $query="SELECT * from TABLE(tameiakes.queries.GET_OWNER_OF_ACTIVE_SERIALNO(:FHMS111))"; */
   $query="SELECT * from TABLE(tameiakes.queries.GET_OWNERFHMORTAXI(:FHMS111))";
   $s11=mb_strtoupper(trim($_REQUEST['FHMS111']));
   $vatown = $_REQUEST['VATOWN111'];
   $hm_parast=$_REQUEST['KAT_DATE111'];
   $eponymia=$_REQUEST['EPONYMIA111'];
   $hm_parast=substr($hm_parast,6,4).substr($hm_parast,3,2).substr($hm_parast,0,2);
   $some_eng=false;
   for ($i=0;$i<3;$i++) {
      if (is_english(mb_substr($s11,$i,1))) {
         $some_eng=true;
         break;
      }
   }
   
   if (!$some_eng) { 
      // First try with greek
      $s11 = eng_to_gr(trim($_REQUEST['FHMS111']));
      $data=array('FHMS111'=>$s11);
      $stmt = $db->Prepare($query); // no error check
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return;
      }
      while ($o1=$rs->FetchNextObject()) {
         $afm111[]=$o1->OWNER;
         $eidos_fhm=$o1->EAFDSS;
      }
      $rs->Close();
   }
   
   if (empty($afm)) {
      // Now try with english
      $s11 = gr_to_eng($s11);
      $data=array('FHMS111'=>$s11);
      $stmt = $db->Prepare($query); // no error check
      if (($rs=$db->Execute($stmt,$data))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return;
      }
      while ($o1=$rs->FetchNextObject()) {
         $afm111[]=$o1->OWNER;
         $eidos_fhm=$o1->EAFDSS;
      }
      $rs->Close();
   }
   
   $protocol=0;
   $query111="SELECT COUNTER FROM ese_query_log WHERE FUNC=21";
   $stmt=$db->Prepare($query111);
   if (($rs=$db->Execute($stmt))!==false) {
      $row=$rs->FetchRow();
      $rs->Close();
      $protocol= $row[0];
   }
   $hmera_system=date("Ymd");
   
   
   
   if (empty($afm111)) {
      uerror("Δεν βρέθηκε ο κάτοχος ΑΦΜ για τον ΦΗΜ $s11 . H καταγγελία θα καταχωρηθεί με τις πληκτρολογημένες επωνυμία,τοποθεσία $eponymia .");
      uerror("Αριθμός καταγγελίας: $protocol / $hmera_system ");
      $query="INSERT INTO ese_katag (kat_date, kat_ydate, kat_protocol,kat_eidos, kat_eponymia) VALUES(:KAT_DATE, :KAT_YDATE, :KAT_PROTOCOL, 1, :KAT_EPONYMIA)";
      $stmt=$db->Prepare($query);
      $data=array('KAT_DATE'=> $hm_parast, 'KAT_YDATE'=> $hmera_system, 'KAT_PROTOCOL'=>$protocol, 'KAT_EPONYMIA'=>$eponymia);
      if (!$db->Execute($stmt,$data)) { uerror( __LINE__.$db->ErrorMsg() ); }
   }
   
   if (count($afm111) > 1  && $eidos_fhm!=6 ) { 
      uerror("Bρέθηκαν περισσότεροι του ενός κάτοχοι για τον ΦΗΜ $s11 . H καταγγελία θα καταχωρηθεί.");
      uerror("Αριθμός καταγγελίας: $protocol / $hmera_system ");
      $query="INSERT INTO ese_katag (kat_eafdss, kat_date, kat_ydate, kat_protocol,kat_eidos, kat_eponymia) VALUES(:KAT_EAFDSS, :KAT_DATE, :KAT_YDATE, :KAT_PROTOCOL, 2, :KAT_EPONYMIA)";
      $stmt=$db->Prepare($query);
      $data=array('KAT_EAFDSS'=>$s11, 'KAT_DATE'=> $hm_parast, 'KAT_YDATE'=> $hmera_system, 'KAT_PROTOCOL'=>$protocol, 'KAT_EPONYMIA'=>$eponymia);
      if (!$db->Execute($stmt,$data)) { uerror( __LINE__.$db->ErrorMsg() ); }
   }
   
   if (count($afm111) == 1 )  { 
       foreach ($afm111 as $v1) {    if (strncmp($v1,$vatown,9)==0) 
                                      {umessage("Τα δεδομένα που υποβλήθηκαν αντιστοιχούν στη νομιμότητα. Η καταγγελία δεν θα καταχωρηθεί.");}
                                      else 
                                      {uerror("Το ΑΦΜ που πληκτρολογήσατε $vatown, δεν αντιστοιχεί στον κάτοχο $v1 του ΦΗΜ $s11. Η καταγγελία θα καταχωρηθεί."); 
                                       uerror("Αριθμός καταγγελίας: $protocol / $hmera_system ");
                                       $query="INSERT INTO ese_katag (kat_afm, kat_eafdss, kat_date, kat_ydate, kat_protocol,kat_eidos, kat_eponymia) VALUES(:KAT_AFM, :KAT_EAFDSS, :KAT_DATE, :KAT_YDATE, :KAT_PROTOCOL, 3, :KAT_EPONYMIA)";
                                       $stmt=$db->Prepare($query);
                                       $data=array('KAT_AFM'=>$vatown, 'KAT_EAFDSS'=>$s11, 'KAT_DATE'=> $hm_parast, 'KAT_YDATE'=> $hmera_system, 'KAT_PROTOCOL'=>$protocol, 'KAT_EPONYMIA'=>$eponymia);
                                       if (!$db->Execute($stmt,$data)) { uerror( __LINE__.$db->ErrorMsg() ); }
                                 }      
                              }
   }
   
   if (count($afm111) > 1 and $eidos_fhm==6 )  { 
                                       uerror("Η καταγγελία θα καταχωρηθεί."); 
                                       uerror("Αριθμός καταγγελίας: $protocol / $hmera_system ");
                                       $query="INSERT INTO ese_katag (kat_afm, kat_eafdss, kat_date, kat_ydate, kat_protocol,kat_eidos, kat_eponymia) VALUES(:KAT_AFM, :KAT_EAFDSS, :KAT_DATE, :KAT_YDATE, :KAT_PROTOCOL, 4, :KAT_EPONYMIA)";
                                       $stmt=$db->Prepare($query);
                                       $data=array('KAT_AFM'=>$vatown, 'KAT_EAFDSS'=>$s11, 'KAT_DATE'=> $hm_parast, 'KAT_YDATE'=> $hmera_system, 'KAT_PROTOCOL'=>$protocol, 'KAT_EPONYMIA'=>$eponymia);
                                       if (!$db->Execute($stmt,$data)) { uerror( __LINE__.$db->ErrorMsg() ); }
   }
  
}
//--------------------------------------
function end_user_qry2()
{
   global $x2;
   $db=&$x2->db;
   
   do {
      $s11 = trim(@$_REQUEST['S11']);
      if (mb_substr($s11, 0, 1)==="W" || mb_substr($s11, 0, 4)==="TEST_")
         $ls=14;
      else
         $ls=11;

      if (mb_strlen($s11)!=$ls) {
         uerror("Λάθος στον Σειριακό! Απαιτούνται ακριβώς 11 χαρακτήρες!");
         break;
      }
      
      $prog8 = trim($_REQUEST['PROG8']);
      if (!preg_match('/^[0-9]{1,8}$/', $prog8)) {
         uerror("Ο προοδευτικός α/α πρέπει να είναι το πολύ 8 ψηφία!");
         break;
      }
      
      $query="SELECT * FROM ese_esi WHERE EAFDSS=:EAFDSS AND PROGRESSIVE=:PROGRESSIVE" ;
      $data=array('EAFDSS'=>gr_to_eng($s11), 'PROGRESSIVE'=>(int)$prog8);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror($db->ErrorMsg());
         break;
      }
      $o1=$rs->FetchNextObject();
      $rs->Close();
      $gt=abs( strtr($_REQUEST['GTOTAL'], ',', '.') );
      if ($o1===false || (abs($o1->GTOTAL)!=0 && abs($o1->GTOTAL)!=$gt)) {
         uerror("Το παραστατικό δεν βρέθηκε!");
         break;
      }
      
      umessage("Η υπογραφή είναι έγκυρη. Ελέγξτε το περιεχόμενο!");
      end_user_show_sig($o1);
      
   } while (false); 
}
//--------------------------------------
function end_user_ask()
{
   //$_SESSION['VCODEC']=mt_rand(10000,99999);
?>
<h1>Τελικός χρήστης</h1>
Εδώ μπορείτε να ελέγξετε την εγκυρότητα ενός παραστατικού, εφόσον αυτό έχει διαβιβαστεί.
<p></p>
<form action="<?php echo myhtml($_SERVER['PHP_SELF'])?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="11">
<fieldset>
   <legend>Στοιχεία παραστατικού</legend>
   <b>77 χαρακτήρες υπογραφής:</b><br>
   <table>
   <tr>
      <td class=HILINE>Hex 40</td>
      <td class=HILINE>Ημερήσιος α/α</td>
      <td class=MYLABEL>Προοδευτικός α/α</td>
      <td class=HILINE>Ημ/νια &amp; ώρα</td>
      <td class=MYLABEL>Σειριακός</td>
   </tr>
   <tr>
      <td class=HILINE>XXXXXXXXXXXXXXXXXXXX</td>
      <td class=HILINE>NNNN</td>
      <td class=MYLABEL><input type=text name="PROG8" maxlength=8></td>
      <td class=HILINE>YYMMDDhhmm</td>
      <td class=MYLABEL><input type=text name="S11" maxlength=14></td>
   </tr>
   </table>
   &nbsp;
   <table>
   <tr>
      <td>Συνολική αξία παραστατικού</td>
      <td><input type=text name="GTOTAL"></td>
      <td colspan=2>( Μην χρησιμοποιείτε διαχωριστές χιλιάδων. Σύμβολο υποδιαστολής η τελεία.)</td>
   </tr>
   <tr>
      <td>Κωδικός επιβεβαίωσης</td>
      <td><input type=text name="VCODE"></td>
      <td><img src="../lib/vcode.php?BCOLOR=50,50,50"></td>
      <td>Παρακαλούμε πληκτρολογήστε τους χαρακτήρες της εικόνας</td>
   </tr>
   </table>

</fieldset>
<input type=submit class=bigButton value="Ελεγχος">
<input type=button class=bigButton value="Ακυρο" onclick="goTo(0)">
</form>
<?php
   print_footer();
}
//--------------------------------------
function end_usr_ask_fhm()
{
   global $x2;
   $db=&$x2->db;

   //$_SESSION['VCODEC']=mt_rand(10000,99999);
?>
<script>
$(function(){
   goserial();
});
function goserial()
{
   $('#getserial').show();
   $('#getegrisi').hide();
   $('#getvatown').hide();
   $('#getkatagelia').hide();
}
function goegrisi()
{
   $('#getegrisi').show();
   $('#getserial').hide();
   $('#getvatown').hide();
   $('#getkatagelia').hide();
}
function govatown()
{
   $('#getegrisi').hide();
   $('#getserial').hide();
   $('#getvatown').show();
   $('#getkatagelia').hide();
}
function gokatagelia()
{
   $('#getegrisi').hide();
   $('#getserial').hide();
   $('#getvatown').hide();
   $('#getkatagelia').show();
}

</script>

<script>
$(function() {
    $( document.goForm.KAT_DATE111 ).datepicker();
  });
</script>




<h1>Τελικός χρήστης</h1>
Εδώ μπορείτε να ελέγξετε τον ΑΦΜ του κατόχου ενός ΦΗΜ: ταμειακής μηχανής, ΕΑΦΔΣΣ, φορολογικού εκτυπωτή ή ΑΔΗΜΕ ταξιμέτρου.
<p></p>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="21">
<fieldset>
   <legend> Επιστρεφόμενα Δεδομένα </legend>
   <table>
   <tbody>
      <tr>
         <td colspan=4>
            <label><input type=radio name="WHAT" value="1" checked onclick="goserial()">Κάτοχος (ΑΦΜ)</label><br>
            <label><input type=radio name="WHAT" value="2" onclick="goegrisi()">Τύπος - Μοντέλο</label><br>
            <label><input type=radio name="WHAT" value="3" onclick="govatown()">Στοιχεία ΦΗΜ  </label><br>
            <label><input type=radio name="WHAT" value="4" onclick="gokatagelia()">Υποβολή καταγγελίας</label>
            <hr>
         </td>
      </tr>
   </tbody>
   <tbody id=getserial>
      <tr>
         <td>Αριθμός Ταμειακής Μηχανής χωρίς ενδιάμεσα κενά</td>
         <td><input type=text name="FHMS11"></td>
      </tr>
   </tbody>
   <tbody id=getegrisi>
      <tr>
         <td>Α/Α έγκρισης</td>
         <td><input type=text name="EGRISI"></td>
      </tr>
   </tbody>
   <tbody id=getvatown>
      <tr>
         <td>ΑΦΜ κατόχου</td>
         <td><input type=text name="VATOWN"></td>
      </tr>
      <tr>
         <td>Αριθμός υποκαταστήματος</td>
         <td><input type=text name="BRANCH" maxlength=4> (0...9999)</td>
      </tr>
   </tbody>
   <tbody id=getkatagelia>
      <tr>
         <td>Αριθμός Ταμειακής Μηχανής χωρίς ενδιάμεσα κενά</td>
         <td><input type=text name="FHMS111"></td>
      </tr>
      <tr>
         <td>ΑΦΜ κατόχου ταμειακής μηχανής</td>
         <td><input type=text name="VATOWN111"></td>
      </tr>
      <tr>
      <td>Hμερομηνία παραστατικού</td>
      <td><input type="text" name="KAT_DATE111" value="<?php echo date('d-m-Y'); ?>"></td>
      </tr>
      <tr>
         <td>Επωνυμία, διεύθυνση καταστήματος, κείμενο καταγγελίας</td>
         <td><input type=text name="EPONYMIA111" maxlength=79></td>
      </tr>
      
   </tbody>
   <tbody>
      <tr>
         <td>Κωδικός επιβεβαίωσης</td>
         <td><input type=text name="VCODE"></td>
         <td><img src="../lib/vcode.php?BCOLOR=50,50,50"></td>
         <td>Παρακαλούμε πληκτρολογήστε τους χαρακτήρες της εικόνας</td>
      </tr>
   </tbody>
   </table>
</fieldset>
<input type=submit class=bigButton value="Ελεγχος">
<input type=button class=bigButton value="Ακυρο" onclick="goTo(0)">
<?php
   $query="SELECT COUNTER FROM ese_query_log WHERE FUNC=21";
   $stmt=$db->Prepare($query);
   if (($rs=$db->Execute($stmt))!==false) {
      $row=$rs->FetchRow();
      $rs->Close();
      echo $row[0]." ερωτήματα μέχρι τώρα...";
   }
?>
</form>
<?php
   print_footer();
}
//--------------------------------------
function onUnknown($fu)
{
   uerror("Unknown function $fu");
   echo "<p><a href=\"".myhtml($_SERVER['PHP_SELF'])."?FUNCTION=6\">Return Home</a></p>";
}
//--------------------------------------
function refresh_setupEx()
{
   global $x2;
   $db=&$x2->db;
   
   if (empty($x2->USERID) || $x2->ULEVEL==2) { // precaution 
      return;
   }
   
   if (empty($_REQUEST['RECORDID'])) {
      uerror('Empty AFM (not posted)');
      return;
   }
   
   $afm=$_REQUEST['RECORDID'];
   if (($oret=taxis_get_eafdss(false, $afm))===false) { // $eafdss: type/serial
      uerror("taxis_get_eafdss() failed!");
      return;
   }
   
   $query="SELECT USERID FROM ese_user WHERE VATNO=:VATNO";
   $data=array('VATNO'=>$afm);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row===false) {
      uerror("Δεν βρέθηκε ο χρήστης με ΑΦΜ $afm");
      return;
   }
   $userid=$row[0];
   
   // Get FHM of local database
   $existing=array();
   $query="SELECT EAFDSS FROM ese_vatno WHERE VATNO=:VATNO";
   $data=array('VATNO'=>$afm);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   while ($o1=$rs->FetchNextObject()) {
      $existing[]=$o1->EAFDSS; // s11
   }
   $rs->Close();

   // Delete any local existing FHM not found in taxis 
   $query="DELETE FROM ese_vatno WHERE EAFDSS=:EAFDSS";
   $stmt = $db->Prepare($query); // no error check
   foreach ($existing as $ea1) {
      if (!array_key_exists($ea1, $oret->eafdss)) {
         $data=array('EAFDSS'=>$ea1);
         if (!$db->Execute($stmt,$data)) {
            uerror(__LINE__.$db->ErrorMsg());
            return;
         }
      }
   }
   
   // Insert any non existing FHM
   $query="INSERT INTO ese_vatno (EAFDSS, MTYPE, VATNO, AESKEY, USERID) 
         VALUES(:EAFDSS, :MTYPE, :VATNO, :AESKEY, :USERID)";
   $stmt2 = $db->Prepare($query); // no error check
   foreach ($oret->eafdss as $eaa) {
      if (in_array($eaa[1], $existing)) 
         continue;
         
      $aeskey=get_aeskey();
      $data=array('EAFDSS'=>$eaa[1], 'MTYPE'=>($eaa[0]==5?0:1), 'VATNO'=>$afm, 'AESKEY'=>$aeskey, 'USERID'=>$userid);
      if (!$db->Execute($stmt2,$data)) {
         uerror( __LINE__.$db->ErrorMsg() );
         return false;
      }
   }
}
//--------------------------------------
function refresh_setup()
{
   global $x2;
   $db=&$x2->db;
   
   $query="SELECT EMAIL, VATNO FROM ese_user WHERE USERID=:USERID";
   $data=array('USERID'=>$x2->USERID);
   if (($rs=$db->Execute($query, $data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row===false) {
      uerror("Ο χρήστης δεν έχει εγγραφές στο Esend!");
      return;
   }
   $user=$row[0];
   $afm = (empty($row[1])?false:$row[1]);
   
   $oret = taxis_get_eafdss($user,$afm); // returns object of type cTAXISRET
   if ($oret===false || empty($oret->eafdss)) {
      uerror("Δεν υπάρχουν στοιχεία Φορολογικών μηχανισμών στο Taxis!");
      return;
   }

   if (!fill_ese_vatno($x2->USERID, $oret))
      return usr_ask_login();
}
//--------------------------------------
function fix_missing_aes()
{
   global $x2;
   $db=&$x2->db;
   
   $eafdss=array();
   $query="SELECT EAFDSS FROM ese_vatno WHERE AESKEY IS NULL OR AESKEY='' ";
   if (($rs=$db->Execute($query))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   while ($row=$rs->FetchRow()) {
      $eafdss[]=$row[0];
   }
   $rs->Close();
   
   $query="UPDATE ese_vatno SET AESKEY=:AESKEY WHERE EAFDSS=:EAFDSS";
   $stmt=$db->Prepare($query);
   foreach ($eafdss as $ea1) {
      $data=array('EAFDSS'=>$ea1, 'AESKEY'=>get_aeskey() );
      if (!$db->Execute($query,$data)) {
         uerror(__LINE__.$db->ErrorMsg());
         return;
      }
   }
}
//--------------------------------------
function show_setup_FHM()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=array('F_VATNO', 'F_EAFDSS');
   foreach ($ar1 as $f1) {
      if (isset($_REQUEST[$f1])) {
         $_SESSION[$f1]=$_REQUEST[$f1];
      }
   }
   
   echo "<h1>ΕΑΦΔΣΣ και Ταμειακές</h1>";
?>
<div id=aboutS11 title="Εταιρία συντήρησης ΕΑΦΔΣΣ"></div>
<div id=aesDlg title="Κλειδί AES"></div>
<script>
var afm,s11x;
$(function() {
   $('#aboutS11').dialog({autoOpen:false, modal:true, width:450, height:230, buttons: {
        Ok: function() {
          $( this ).dialog( "close" );
        }
      } });
   $('#aesDlg').dialog({autoOpen:false, modal:true, width:620, height:140, buttons: {
        Ok: function() {
          $( this ).dialog( "close" );
        }
      } });
});
var aes;
$(function(){
   $('#popmenuF').dialog({autoOpen:false, modal:true, width:360});
} );
function oclick(stage, row, col)
{
   afm = this.cells(row,0).getValue();
   s11x = this.cells(row,2).getValue();
   aes = this.cells(row,3).getValue();
   show_popup(); 
}
function winRet(x)
{
	switch (x)
	{
   case 503: // recheck signature
      goRecord(x,afm);
      break;
   case 1:
      var ar1=s11x.split('(');
      $('#aboutS11').load('esend2.php', {FUNCTION:1, S11:ar1[0]} ).dialog('open');
      break;
   case 2:
      $('#aesDlg').html('<b>'+aes+'</b>').dialog('open');
      break;
   }
   hide_popup();
}
function onFilter()
{            
   $('#popmenuF').dialog('open');
}
</script>
<?php
   $pg=getPage();
	$pgsz=getPageSize('grid5');   
   
   $vatnos=array();
   $where=false; 
   $data=array();  
   $query="SELECT T1.MTYPE, T1.EAFDSS, T1.VATNO, T1.AESKEY, T2.USERID, T2.COMPANY FROM ese_vatno T1 
      LEFT JOIN ese_user T2 ON (T2.VATNO=T1.VATNO)";
   if ($x2->ULEVEL==2) {
      $query .= " WHERE T2.USERID=".$x2->USERID;
      $where=true;
   }
   if (!empty($_SESSION['F_VATNO'])) {
      $operat = (strpos($_SESSION['F_VATNO'], '%')===false?'=':'LIKE');
      $query .= ($where?" AND ":" WHERE ");
      $query .= " T1.VATNO $operat :F_VATNO ";
      $data['F_VATNO'] = $_SESSION['F_VATNO']; 
      $where=true;
   }
   if (!empty($_SESSION['F_EAFDSS'])) {
      $operat = (strpos($_SESSION['F_EAFDSS'], '%')===false?'=':'LIKE');
      $query .= ($where?" AND ":" WHERE ");
      $query .= " EAFDSS $operat :F_EAFDSS ";
      $data['F_EAFDSS'] = $_SESSION['F_EAFDSS']; 
      $where=true;
   }
   $query .= " ORDER BY T1.VATNO, EAFDSS";
   if (($rs=$db->PageExecute($query,$pgsz,$pg,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   
   $gr1=new cXRID('grid5');
   
   array_push( $gr1->cols,
		array( 'ΑΦΜ', 120),
      array( 'Τύπος', 120),
		array( 'Σειριακός', 120),
		array( 'AES κλειδί (Hex values)', 420),
      array( 'Id χρήστη', 120),
      array( 'Εταιρία', 120)
   );

   $last_vatno=false;
   while ($o1=$rs->FetchNextObject()) {
      if (!in_array($o1->VATNO, $vatnos)) {
         $vatnos[] = $o1->VATNO;
      }
      
      $row1=array();
      
      if ($o1->VATNO!==$last_vatno) {
         $row1[] = myhtml($o1->VATNO);
         $last_vatno=$o1->VATNO;
      }
      else {
         $row1[] = '';
      }
       
      $row1[]= ($o1->MTYPE==0?'ΕΑΦΔΣΣ':'Ταμειακή');
      
      $ords='';
      $esfdss928 = UTF8decode($o1->EAFDSS);
      $l_ea=strlen($esfdss928);
      for ($i1=0;$i1<$l_ea;$i1++) {
         $ords .= ord($esfdss928{$i1}).' ';                     
      }
      $row1[] = myhtml($o1->EAFDSS." ($ords)");
      
      $row1[] = myhtml($o1->AESKEY);
      $row1[] = myhtml($o1->USERID);
      
      $gr1->rows[]=$row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,101);
   if ($x2->ULEVEL==0) {
      echo "<button type=button onclick=\"goTo(106)\">Fill AES key</button>\n";
   }
   else if ($x2->ULEVEL==2) {
      echo "<button type=button onclick=\"goTo(100)\">Ανανέωση</button>\n";
   }
   echo " | <b><a href=\"javascript:onFilter()\"> <input type=checkbox ";
   if (!empty($where)) { echo "checked"; }
   echo " id=filter disabled>Φίλτρο</a></b> | <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>
      </div>";
?>
<div id=popmenuF title="Καθορισμός φίλτρου">
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm2">
<input type=hidden name="FUNCTION" value="101">
<table>
<tr>
   <td>ΑΦΜ</td>   
   <td><input type=text name="F_VATNO" value="<?php echo myhtml(@$_SESSION['F_VATNO']); ?>" maxlength=11></td>
</tr>
<tr>
   <td>Σειριακός ΦΗΜ</td>      
   <td><input type=text name="F_EAFDSS" value="<?php echo myhtml(@$_SESSION['F_EAFDSS']); ?>" maxlength=14></td>
</tr>
<tr>
   <td></td>
   <td style="color:#909090">Μπορείτε να χρησιμοποιήσετε τον χαρακτήρα '%' στην θέση ενός η περισσότερων χαρακτήρων.</td>
</tr>
<tr>
   <td></td>
   <td><input type=submit class=bigButton value="Εφαρμογή"></td>
</tr>
</table>
</form>
</div>
<?php
   $selx=array(
      array(1, '../img/info_pop.png', 'Εταιρία συντήρησης'),
      array(2, '../img/key16x16.png', 'Κλειδί AES')
      );
   if ($x2->ULEVEL==0 || $x2->ULEVEL==1) { // super user OR admin
      $selx[] = "<hr>";      
      $selx[] = array(503, '../img/reset.png', 'Reset (μπορεί να αργήσει)'); 
   }
   draw_popup($selx);
}
//--------------------------------------
function add_vatno()
{
   global $x2;
   $db=&$x2->db;
   
   $vatno = trim($_REQUEST['VATNO']);
   if (!preg_match('/^[0-9]{9}$/', $vatno)) {
      uerror("VAT no. should be 9 digits!");
      return show_setup_FHM();
   }
   
   if (!CheckAfmAlgorithm($vatno)) {
      uerror("VAT no. is not good!");
      return show_setup_FHM();
   }
   
   if (empty($_REQUEST['MTYPE'])) {
      uerror("You need select type first!");
      return show_setup_FHM();
   }
   $mtype = $_REQUEST['MTYPE'] - 100; 
   
   $eafdss = mb_strtoupper(trim($_REQUEST['EAFDSS']));
   $eafdssCHK = UTF8decode($eafdss);
   if (!preg_match('/^.{3}[0-9]{8}$/', $eafdssCHK) && !preg_match('/^INC__TEST(_|[0-9]){2}$/', $eafdssCHK)) {
      uerror("EAFDSS serial should be 3 chars. and 8 digits!");
      return show_setup_FHM();
   }
   
   $query="SELECT COUNT(*) FROM ese_vatno WHERE VATNO=:VATNO AND USERID<>:USERID AND USERID<>0";
   $data=array('VATNO'=>$vatno, 'USERID'=>$x2->USERID);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row[0]) {
      uerror("VAT no. $vatno assigned to another user!");
      return show_setup_FHM();
   }
   
   $query="SELECT USERID FROM ese_vatno WHERE EAFDSS=:EAFDSS";
   $data=array('EAFDSS'=>$eafdss);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row!==false) {
      if ($row[0]!=0 && $row[0]!=$x2->USERID) {
         uerror("EAFDSS $eafdss assigned to another user!");
      }
      else { // o.k., re-assign
         $query="UPDATE ese_vatno SET USERID=:USERID, MTYPE=:MTYPE, VATNO=:VATNO 
            WHERE EAFDSS=:EAFDSS";
         $data=array('USERID'=>$x2->USERID, 'MTYPE'=>$mtype, 'VATNO'=>$vatno, 'EAFDSS'=>$eafdss);
         if (!$db->Execute($query,$data)) {
            uerror(__LINE__.$db->ErrorMsg());
         } 
      }
      return show_setup_FHM();
   }
   
   $aeskey=get_aeskey();
    
   $query="INSERT INTO ese_vatno (EAFDSS, MTYPE, VATNO, AESKEY, USERID) 
      VALUES(:EAFDSS, :MTYPE, :VATNO, :AESKEY, :USERID)";
   $data=array('EAFDSS'=>$eafdss, 'MTYPE'=>$mtype, 'VATNO'=>$vatno, 'AESKEY'=>$aeskey, 'USERID'=>$x2->USERID);
   if (!$db->Execute($query,$data)) {
      uerror(__LINE__.$db->ErrorMsg());
   }
   
   // whether o.k. OR error:
   show_setup_FHM();  
}
//--------------------------------------
function request_e_txt()
{
?>
<h1>Υποβολή E.TXT για έλεγχο</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="151">
<table>
<tr>
   <td>E.TXT file</td>
   <td><input type=file name="E_TXT_FILE"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <input type=button class=bigButton value="Ακυρο" onclick="goTo(6)">
   </td>
</tr>
</table>
</form>
<?php
}
//--------------------------------------
function upd_eid_udata()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=explode('-', $_REQUEST['USRHMERA']);
   while (count($ar1)<3) {             
      $ar1[]=0;
   }
   $Hmera = date('Ymd', mktime(0,0,0, $ar1[1], $ar1[0], $ar1[2]));
   
   $data=array('HMERA'=>$Hmera, 'EID'=>$_REQUEST['EID'], 'U_VATNO'=>$_SESSION['USERAFM']);
   if (!empty($_REQUEST['UDOCID'])) {
      $query="UPDATE ese_esi SET HMERA=:HMERA, UDOCID=:UDOCID 
         WHERE EID=:EID AND U_VATNO=:U_VATNO AND DOCID=215";
      $data['UDOCID']=(int)$_REQUEST['UDOCID'];
   }
   else {
      $query="UPDATE ese_esi SET HMERA=:HMERA 
         WHERE EID=:EID AND U_VATNO=:U_VATNO";
   }
   if (!$db->Execute($query,$data))
      uerror(__LINE__.$db->ErrorMsg());
}
//--------------------------------------
function get_find_data_ar1()
{ 
   $ar1=array(
      'ISSUER_AFM'  => 'ΑΦΜ υπόχρεου',
      'RECV_AFM'    => 'ΑΦΜ αντισυμβαλλόμενου',
      'EAFDSS'      => 'ΕΑΦΔΣΣ',
      'KARTAPOD'    => 'Κάρτα Αποδείξεων',
      'ZNR'         => 'Αριθμός Ζ',
      'DAILY'       => 'Ημερήσιος α/α',
      'PROGRESSIVE' => 'Προσδευτικός α/α',
      'DOCID'       => 'Τύπος παραστατικού',
      'MATCHEID'    => 'Ανοιχτό/ Κλειστό',
      'SEIRA'       => 'Σειρά παραστατικού',
      'DOCNR'       => 'Αριθμός παραστατικού',
      'GTOTAL'      => 'Σύνολο αξίας',
      'CURCODE'     => 'Νόμισμα',
      'FDATETIME'   => 'Ημ/ία ψηφ. υπογραφής',
      'HMERA'       => 'Ημ/νία παραστατικού'
      );
      
   return $ar1;
}
//--------------------------------------
function show_ese_esi_rec(&$gr1, $o1)
{
   global $x2;
   $db=&$x2->db;
   static $stmNOBL=false;
   
   if (empty($gr1->cols)) {
      array_push($gr1->cols,
         array( 'ΑΦΜ εκδότη', 80),
         array( 'ΑΦΜ αντισυμβαλλόμενου', 80),
         array( 'ΕΑΦΔΣΣ', 80),
         array( 'Z', 80),
         array( 'Ημερήσιος α/α', 80),
         array( 'Προοδευτικός α/α', 80),
         array( 'Ημ/νια+ώρα υπογρ.', 80),
         array( 'Παραστατικό', 80),
         array( 'Σειρά', 80),
         array( 'Αριθμός', 80),
         array( 'Ημερομηνία', 80),
         array( 'Γενικό σύνολο', 80, 'right'),
         array( 'Κωδ. νομίσματος', 80),
         array( 'Δηλωθείς τύπος', 80), 
         array( 'Δηλωθείσα ημερομηνία', 80),
         array( 'Μη υπόχρεος', 80),
         array( 'Τύπος πηγαίου', 100),
         array( 'Ζευγάρι', 80),
         array( 'Πακέτο ΜΥΦ', 80),
         array( 'Τύπος ΜΥΦ', 80)
      );
   }
   
   if ($stmNOBL===false) {
      $query="SELECT COUNT(*) FROM ese_nonoblig WHERE VATNO=:VATNO AND AFM=:AFM";
      $stmNOBL=$db->Prepare($query);
   }
   
   $nobl=false;
   $data2=array('VATNO'=>$o1->U_VATNO, 'AFM'=>$o1->RECV_AFM);
   if (($rs2=$db->Execute($stmNOBL, $data2))!==false) {
         $row2=$rs2->FetchRow();
         $rs2->Close();
         $nobl=(bool)$row2[0];
   }
      
   $row1=array();
      
   $row1[]=array('data'=>myhtml($o1->ISSUER_AFM), 'userdata'=>array('moreinfo'=>$o1->EID) );
   $row1[]=myhtml($o1->RECV_AFM);
   $row1[]=myhtml($o1->EAFDSS);
   $row1[]=myhtml($o1->ZNR);
   $row1[]=myhtml($o1->DAILY);
   $row1[]=myhtml($o1->PROGRESSIVE);
   $row1[]=GrDateTime($o1->FDATETIME);
   $row1[]=myhtml($o1->DOCID."# ".$x2->doc_name($o1->DOCID));
   $row1[]=myhtml($o1->SEIRA);
   $row1[]=myhtml($o1->DOCNR);
   $row1[]=myhtml($o1->HMERA);
   $row1[]=myhtml($o1->GTOTAL);
   $row1[]=myhtml($o1->CURCODE);
   $row1[]=(is_null($o1->UDOCID)?'':myhtml($o1->UDOCID."# ".$x2->doc_name($o1->UDOCID)));
   $row1[]=GrDate($o1->HMERA);
   $row1[]=($nobl?'NAI':'');
   $row1[]=myhtml($o1->SRCDOCID."# ".$x2->doc_name($o1->SRCDOCID));
   $row1[]=$o1->MATCHEID;
   $row1[]=$o1->PKGID;
   $row1[]=$o1->DATATYPE;
      
   $gr1->rows[]=$row1;
}
//--------------------------------------
function do_find_data()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h3>Ανεύρεση κινήσεων</h3>";  
?>
<script>
var eid;
$(function(){
   $('#eidUpd').dialog({autoOpen:false, modal:true, width:640});
} );
function oclick(stage, row, col)
{
   eid = this.getUserData(row,'moreinfo'); 
   $('#eidUpd').load('esend2.php', {FUNCTION:3, EID:eid}, function(){
      $('input[name=USRHMERA]').datepicker();
   }  ).dialog('open');
}
</script>
<div id=eidUpd title="Περισσότερα στοιχεία χρήστη"></div>
<?php            
   if ($x2->ULEVEL==2) {
      $_SESSION['ISSUER_AFM'] = $_SESSION['USERAFM'];
   }
   
   $pg=getPage();
	$pgsz=getPageSize('grid10');
   
   $gr1=new cXRID('grid10');
   
   $ar1=get_find_data_ar1();
   foreach ($ar1 as $k=>$v) {
      if (isset($_REQUEST[$k])) {
         if ($k==='FDATETIME' || $k==='HMERA') {
            $_SESSION[$k] = implode('', array_reverse(explode('-', $_REQUEST[$k])));
         }
         else {
            $_SESSION[$k] = $_REQUEST[$k];
         }
      }
   }
   
   $data=array();
   $query="SELECT * FROM ese_esi WHERE 1=1 ";
   foreach ($ar1 as $k=>$v) {
      if (isset($_SESSION[$k]) && strlen($_SESSION[$k])>0) {
         if ($k==='MATCHEID') {
            if ($_SESSION[$k]==1) { // ανοιχτά
               $query .= " AND NVL(MATCHEID,0) = 0 ";
            }
            else if ($_SESSION[$k]==2) { // κλειστά
               $query .= " AND NVL(MATCHEID,0) > 0 ";
            }
         }
         else if ($k==='FDATETIME') {
            $query .= " AND SUBSTR(FDATETIME,1,8)=:$k ";
            $data[$k]=$_SESSION[$k];
         }
         else {
            $query .= " AND $k=:$k ";
            $data[$k]=$_SESSION[$k];
         } 
      }
   }
   $query .= " ORDER BY FDATETIME";    
   
   if (($rs=$db->PageExecute($query,$pgsz,$pg,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   
   while ($o1=$rs->FetchNextObject()) {
      show_ese_esi_rec($gr1, $o1);
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   if (empty($gr1->rows)) {
      umessage("Δεν υπάρχουν εγγραφές που να πληρούν τα κριτήρια!");
   }
   else {
      if ($x2->ULEVEL==2) {
         $gr1->click='oclick';
      }
      $gr1->play();
   }
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,115);
   echo "&nbsp;<b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>
      </div>";
}      
//--------------------------------------
function ask_find_data()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=get_find_data_ar1();
?>
<script>
$(function() {
    $( document.goForm.FDATETIME ).datepicker();
    $( document.goForm.HMERA ).datepicker();
  });
function onDocidChange()
{
   if ( parseInt($( document.forms[0].DOCID ).val()) == 215 )
      $('#matcheid').show();
   else
      $('#matcheid').hide();
}
</script>
<h1>Ανεύρεση κινήσεων</h1>
<form action="<?php echo ($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="115">
<table>
<?php
   foreach ($ar1 as $k=>$v) {
      if ($x2->ULEVEL==2 && $k==='ISSUER_AFM') 
         continue;
         
      if ($k==='MATCHEID') {
         echo "<tbody id=matcheid>";
      }
         
      echo "<tr>
         <td>".myhtml($v)."</td>
         <td>";
         
      if ($k==='DOCID') {
         $ar2 = $x2->get_docs_array(false);
         echo "<select name=\"DOCID\" onChange=\"onDocidChange()\">
            <option value=\"\"></option>";
         prAssocSelect($ar2, 215);
         echo "</select>";
      }
      else if ($k=='MATCHEID') {
         echo "<select name=\"MATCHEID\">
            <option value=\"0\" SELECTED>Ολα</option>
            <option value=\"2\">Αντιστοιχισμένα</option>
            <option value=\"1\">Ανοικτά</option>
            </select>";
      }
      else {
         echo "<input type=text name=\"$k\">";
      }
               
      echo "</td></tr>";
      
      if ($k==='MATCHEID') {
         echo "</tbody>";
      }
   }
?>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ερώτηση">
      <input type=button class=bigButton value="Ακυρο" onclick="goTo(6)">
   </td>
</tr>
</table>
</form>
<?php   
}
//--------------------------------------
function request_s_real()
{
   echo "<h1>Υποβολή ENCRYPTED S.txt για έλεγχο</h1>";
   requert_s_file(true);
}
//--------------------------------------
function request_s_plain()
{
   echo "<h1>Υποβολή unencrypted S.TXT για έλεγχο</h1>";
   requert_s_file(false);
}
//--------------------------------------
function requert_s_file($real)
{
?>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" enctype="multipart/form-data" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="<?php echo $real?121:131; ?>">
<table>

<?php                
   if ($real) {
?>                            
<tr>
   <td>IV (Hex)</td>
   <td><input type=text name="IV" size=40 maxlength=32></td>
</tr>
<?php
   }
?>

<tr>
   <td>S.TXT file</td>
   <td><input type=file name="S_TXT_FILE"></td>
</tr>
<tr>
   <td><label for=vfc>View file contents</label></td>
   <td><input type=checkbox id=vfc name="VIEW_FILE" checked></td>
</tr>
<tr>
   <td><label for=isze>Ignore &quot;Same Z error&quot;</label></td>
   <td><input type=checkbox id=isze name="IGNORE_SAME_Z"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Υποβολή">
      <input type=button class=bigButton value="Ακυρο" onclick="goTo(6)">
   </td>
</tr>
</table>
</form>
<?php
}
//--------------------------------------
function process_e_txt()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Check E.TXT file</h1>";
   
   $cc = new cCHECKER($db, /* $_charset: 0 =utf-8 */ 0, /* $_is_s */ false);
   do {
      if ($cc->err!=0) {
         // some serious error:
         break;
      }
      $cc->err;
      
      $etxt=file_get_contents($_FILES['E_TXT_FILE']['tmp_name']);
      if ($etxt===false) {
         uerror("Could not read uploaded file contents");
         break; // can not continue
      }
      
      $cc->checkLine(1,$etxt);
   
   } while (false);
   
   // Show error messages
   $n=count($cc->errors);
   for ($i=0;$i<$n;$i++) {
      uerror($cc->errors[$i]);
   }
   
   if ($n==0) {   
      umessage("Ολοι οι έλεγχοι ήταν o.k.");
   }
   else {
      umessage("ΟΙ έλεγχοι ολοκληρώθηκαν");
   }
   
?>
<div>
   <button type=button onclick="goTo(150)">Υποβολή άλλου</button>
   <button type=button onclick="goTo(6)">Ακυρο</button>
</div>   
<?php            
}
//--------------------------------------
function show_file_excel($lines, $cols)
{
   echo "<table border=1><tr><td></td>";
   for ($i=1;$i<=$cols;$i++) {
      echo "<th>$i</th>";
   }
   echo "</tr>";
   
   $nLines=count($lines);
   for ($i=0;$i<($nLines-1);$i++) {
      echo "<tr>
         <td>".($i+1)."</td>";
         
      $ar1=explode(';', $lines[$i]);
      foreach ($ar1 as $field) {
         echo "<td>".myhtml(ToUTF8($field))."</td>";
      }
      
      echo "</tr>";
   }
   
   echo "</table>";
}
//--------------------------------------
function process_s_real()
{
   echo "<h1>Check ENCRYPTED S.txt file</h1>";
   
   $cc=process_s_file(0, /*UI*/true, /*Encrypted*/true);
   
   // Show error messages
   $n=count($cc->errors);
   for ($i=0;$i<$n;$i++) {
      uerror($cc->errors[$i]);
   }
   
   if ($cc->err==0) {   
      umessage("Ολοι (οι βασικοί) έλεγχοι πέρασαν o.k.");
   }
   else {
      umessage("Οι έλεγχοι ολοκληρώθηκαν, ERR=$cc->err, Param=$cc->param");
   }
?>
<div>
   <button type=button onclick="goTo(120)">Υποβολή άλλου</button>
   <button type=button onclick="goTo(6)">Ακυρο</button>
</div>   
<?php
}
//--------------------------------------
function process_s_plain()
{
   echo "<h1>Ελεγχος unencrypted αρχείου S.TXT</h1>";
   
   $cc=process_s_file(0, /*UI*/true, /*Encrypted*/false);
                                                                          
   // Show error messages
   $n=count($cc->errors);
   for ($i=0;$i<$n;$i++) {
      uerror($cc->errors[$i]);
   }
   
   if ($cc->err==0) {   
      umessage("All (base) checks passed o.k.");
   }
   else {
      umessage("Checks completed, ERR=$cc->err, Param=$cc->param");
   }
?>
<div>
   <button type=button onclick="goTo(130)">Υποβολή άλλου</button>
   <button type=button onclick="goTo(6)">Ακυρο</button>
</div>   
<?php
}
//--------------------------------------
function recalc_s_sign()
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=explode(';', $_REQUEST['RECORDID']);
   if (count($ar1)<2) {
      uerror('Incorrect data!');
      return;
   }
   
   $sigs=array();
   
   $query="SELECT HEXSIGN FROM ese_esi WHERE EAFDSS=:EAFDSS AND ZNR=:ZNR ORDER BY DAILY";
   $data=array('EAFDSS'=>gr_to_eng($ar1[0]), 'ZNR'=>(int)$ar1[1]);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   while ($row=$rs->FetchRow()) {
      $sigs[]=$row[0];
   }
   $rs->Close();
   
   $current='';
   
   // Add previous S
   $query="SELECT ZNR, HEXSIGN FROM ese_z WHERE EAFDSS=:EAFDSS AND (ZNR=:ZNR1 OR ZNR=:ZNR2)";
   $data=array('EAFDSS'=>gr_to_eng($ar1[0]), 'ZNR1' => $ar1[1] - 1, 'ZNR2'=>(int)$ar1[1] );
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   while ($o1=$rs->FetchNextObject()) {
      if ($o1->ZNR==($ar1[1]-1)) { // previous
         $sigs[]=$o1->HEXSIGN;
      }
      else { // current
         $current=$o1->HEXSIGN;
      }
   }
   $rs->Close();
   
   $bytes=array();
   foreach($sigs as $hex) {
      $l=strlen($hex);
      // take care for padding chars. if on last block after 'AES decrypt'
      if ($l>40 && ord($hex{40})<=16) {
         $l=40;
      }
      for ($i=0;$i<$l;$i+=2) {
         $s1=substr($hex,$i,2);
         sscanf($s1, "%X", $x);
         $bytes[]= $x;
      }
   }
      
   $iv = call_user_func_array("pack", array_merge(array("C*"), $bytes));
   $newsign = sha1($iv);
   
   if (strcasecmp($newsign, $current)==0) {
      umessage("Η υποβληθείσα υπογραφή για τον $ar1[0] Z=$ar1[1] είναι ΕΝΤΑΞΕΙ!");
   }
   else {
      umessage("Η υποβληθείσα υπογραφή για τον $ar1[0] Z=$ar1[1] ($current) διαφέρει από την υπολογισθείσα (".strtoupper($newsign).").");
   }
}
//--------------------------------------
function delete_s_file()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL==2 && $x2->EMAIL!=='~inca') { // precaution
      return;
   }         
   
   $ar1=explode(';', $_REQUEST['RECORDID']);
   if (count($ar1)<2) {
      uerror('Incorrect data!');
      return;
   }
   
   $db->StartTrans();
   
   do {
      $query="DELETE FROM ese_z WHERE EAFDSS=:EAFDSS AND ZNR=:ZNR";
      $data=array('EAFDSS'=>gr_to_eng($ar1[0]), 'ZNR'=>(int)$ar1[1]);
      if (!$db->Execute($query,$data)) {
         uerror($db->ErrorMsg());
         break;
      }
   
      $query="DELETE FROM ese_esi WHERE EAFDSS=:EAFDSS AND ZNR=:ZNR";
      $data=array('EAFDSS'=>gr_to_eng($ar1[0]), 'ZNR'=>(int)$ar1[1]);
      if (!$db->Execute($query,$data)) {
         uerror($db->ErrorMsg());
         break;
      }
   } while (false);
   
   $db->CompleteTrans();
}
//--------------------------------------
function s_files_all()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL==2) // security
      return home_page();
      
?>      
<h1>Συνολικά Στατιστιτκά</h1>
<script>
var fdt;
function oclick(stage, row, col)
{
   fdt = this.cells(row,0).getValue(); // mm-yyyy
   show_popup(); 
}
function winRet(x)
{
   var url = location.pathname+'?FUNCTION=113&YEAR='+fdt.substr(3,4)+'&MONTH='+fdt.substr(0,2)+'&GROUPBY='+x;
   location.assign(url);
}
</script>   
<?php
   switch ($_REQUEST['ALLRECBY'])
   {
   case 0:
      $query="SELECT SUBSTR(FDATETIME,1,6) F1, ";
      break;
   case 1:
      $query="SELECT DOCID F1, ";
      break;
   case 2:
      $query="SELECT DOCID, SUBSTR(FDATETIME,1,6) F1, ";
      break;
   }

   $query .= "COUNT(*) CN, 
      SUM(NETVALA) N1, SUM(NETVALB) N2, SUM(NETVALC) N3, SUM(NETVALD) N4, SUM(NETVALE) N5, 
      SUM(VATVALA) V1, SUM(VATVALB) V2, SUM(VATVALC) V3, SUM(VATVALD) V4, SUM(GTOTAL) GT 
      FROM ese_esi";

   switch ($_REQUEST['ALLRECBY'])
   {
   case 0:            
      $query .= " GROUP BY SUBSTR(FDATETIME,1,6)
         ORDER BY SUBSTR(FDATETIME,1,6)";
      break;
   case 1:
      $query .= " GROUP BY DOCID
         ORDER BY DOCID";
      break;
   case 2:
      $query .= " GROUP BY DOCID, SUBSTR(FDATETIME,1,6) 
         ORDER BY DOCID, SUBSTR(FDATETIME,1,6)";
      break;
   }
   
   if (($rs=$db->Execute($query))===false) {
      uerror($db->ErrorMsg());
      return GoBack();
   }
   
   $gr1=new cXRID('grid14');
   
   array_push( $gr1->cols,
		array( (empty($_REQUEST['ALLRECBY'])?'Μήνας':'Τύπος παρ/κού'), 100)
      );
   if ($_REQUEST['ALLRECBY']==2) {
      array_push( $gr1->cols,
		    array( 'Μήνας', 100)
      );
   }
   array_push( $gr1->cols,
      array( 'Πλήθος παραστατικών', 80),
      array( 'Καθαρή αξία Α', 80, 'right'),
      array( 'Καθαρή αξία Β', 80, 'right'),
      array( 'Καθαρή αξία Γ', 80, 'right'),
      array( 'Καθαρή αξία Δ', 80, 'right'),
      array( 'Καθαρή αξία Ε', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Β', 80, 'right'),
      array( 'Αξία ΦΠΑ Γ', 80, 'right'),
      array( 'Αξία ΦΠΑ Δ', 80, 'right'),
      array( 'Συνολική αξία', 80, 'right')
      );
   
   while ($o1=$rs->FetchNextObject()) {
      if (is_null($o1->GT)) { // tameiakes
         $o1->GT = $o1->N1 + $o1->N2 + $o1->N3 + $o1->N4 + $o1->N5 + $o1->V1 + $o1->V2 + $o1->V3 + $o1->V4;
      }
          
      $row1=array();
      
      switch ($_REQUEST['ALLRECBY']) 
      {
      case 0:
         $row1[]=substr($o1->F1,4,2)."-".substr($o1->F1,0,4);
         break;
      case 1:
         $row1[]=$o1->F1;
         break;
      case 2:
         $row1[]=$o1->DOCID;
         $row1[]=substr($o1->F1,4,2)."-".substr($o1->F1,0,4);
         break;
      }
      
      $row1[]=$o1->CN;
      $row1[]=GrNumber($o1->N1);
      $row1[]=GrNumber($o1->N2);
      $row1[]=GrNumber($o1->N3);
      $row1[]=GrNumber($o1->N4);
      $row1[]=GrNumber($o1->N5);
      $row1[]=GrNumber($o1->V1);
      $row1[]=GrNumber($o1->V2);
      $row1[]=GrNumber($o1->V3);
      $row1[]=GrNumber($o1->V4);
      $row1[]=GrNumber($o1->GT);
      
      $gr1->rows[]=$row1;
   }
   $rs->Close();
   
   if (empty($_REQUEST['ALLRECBY'])) {
      $gr1->click='oclick';
   }
   $gr1->play();
   
   echo "<div id=tbar2>
      <a href=\"javascript:goTo(110)\">Υποβληθέντα αρχεία S.TXT</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </div>";
    
   $selx=array(
      array(0, '../img/arrow-right-icon.png', 'Ανά ΑΦΜ'),
      array(1, '../img/arrow-right-icon.png', 'Ανά ΑΦΜ/ τύπο παραστατικού'),
      array(2, '../img/arrow-right-icon.png', 'Ανά ΕΑΦΔΣΣ/ τύπο παραστατικού')
      );
   draw_popup($selx);      
}
//--------------------------------------
function s_files_stat()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL<2 && !empty($_REQUEST['ALLREC']))
      return s_files_all(); // total statistics
   
   //
   // Analytic statistics
   //
   if (isset($_REQUEST['YEAR'])) {
      $_SESSION['ST_YEAR'] = $_REQUEST['YEAR'];
      $_SESSION['ST_MONTH'] = $_REQUEST['MONTH'];
      $_SESSION['ST_GROUPBY'] = @$_REQUEST['GROUPBY'];
   }
   
   echo "<h1>Στατιστιτκά για τον ".$_SESSION['ST_MONTH']."/".$_SESSION['ST_YEAR']."</h1>";  
   
   $data=array(
      'HMERASTART'=>sprintf("%s%02s01", $_SESSION['ST_YEAR'], $_SESSION['ST_MONTH']), 
      'HMERAEND'=>sprintf("%s%02s31", $_SESSION['ST_YEAR'], $_SESSION['ST_MONTH']) );
   
   if ($x2->ULEVEL==2) { // user
      $_SESSION['ST_GROUPBY'] = 2;
      
      $query="SELECT T1.EAFDSS, DOCID, COUNT(*) CN, 
         SUM(NETVALA) N1, SUM(NETVALB) N2, SUM(NETVALC) N3, SUM(NETVALD) N4, SUM(NETVALE) N5, 
         SUM(VATVALA) V1, SUM(VATVALB) V2, SUM(VATVALC) V3, SUM(VATVALD) V4, SUM(GTOTAL) GT FROM ese_esi T1
         LEFT JOIN ese_vatno T2 ON (T2.EAFDSS=T1.EAFDSS)  
         WHERE HMERA>=:HMERASTART AND HMERA<=:HMERAEND AND T2.USERID=:USERID   
         GROUP BY T1.EAFDSS, DOCID
         ORDER BY T1.EAFDSS, DOCID";
      $data['USERID']=$x2->USERID;
      $where=true;
   }
   else {
      switch ($_SESSION['ST_GROUPBY']) 
      {
      case 0: // Ανά ΑΦΜ
         $query="SELECT T2.VATNO, '' DOCID, COUNT(*) CN, 
            SUM(NETVALA) N1, SUM(NETVALB) N2, SUM(NETVALC) N3, SUM(NETVALD) N4, SUM(NETVALE) N5, 
            SUM(VATVALA) V1, SUM(VATVALB) V2, SUM(VATVALC) V3, SUM(VATVALD) V4, SUM(GTOTAL) GT FROM ese_esi T1
            LEFT JOIN ese_vatno T2 ON (T2.EAFDSS=T1.EAFDSS) 
            WHERE FDATETIME>=:HMERASTART AND FDATETIME<=:HMERAEND 
            GROUP BY T2.VATNO
            ORDER BY CN DESC";
         break;  
      case 1: // Ανά ΑΦΜ/ τύπο παραστατικού
         $query="SELECT T2.VATNO, DOCID, COUNT(*) CN, 
            SUM(NETVALA) N1, SUM(NETVALB) N2, SUM(NETVALC) N3, SUM(NETVALD) N4, SUM(NETVALE) N5, 
            SUM(VATVALA) V1, SUM(VATVALB) V2, SUM(VATVALC) V3, SUM(VATVALD) V4, SUM(GTOTAL) GT FROM ese_esi T1
            LEFT JOIN ese_vatno T2 ON (T2.EAFDSS=T1.EAFDSS) 
            WHERE FDATETIME>=:HMERASTART AND FDATETIME<=:HMERAEND 
            GROUP BY T2.VATNO, DOCID
            ORDER BY T2.VATNO, DOCID";
         break;
      case 2: // Ανά ΕΑΦΔΣΣ/ τύπο παραστατικού
         $query="SELECT EAFDSS, DOCID, COUNT(*) CN, 
            SUM(NETVALA) N1, SUM(NETVALB) N2, SUM(NETVALC) N3, SUM(NETVALD) N4, SUM(NETVALE) N5, 
            SUM(VATVALA) V1, SUM(VATVALB) V2, SUM(VATVALC) V3, SUM(VATVALD) V4, SUM(GTOTAL) GT FROM ese_esi 
            WHERE FDATETIME>=:HMERASTART AND FDATETIME<=:HMERAEND 
            GROUP BY EAFDSS, DOCID
            ORDER BY EAFDSS, DOCID";
         break;
      }
   }; 

   if (($rs=$db->Execute($query,$data))===false) {
      uerror($db->ErrorMsg());
      return GoBack();
   }
   
   $gr1=new cXRID('grid9');
   
   array_push( $gr1->cols,
		array( ($_SESSION['ST_GROUPBY']==2?'ΕΑΦΔΣΣ':'ΑΦΜ'), 80),
      array( 'Παραστατικό', 80),
      array( 'Πλήθος παραστατικών', 80),
      array( 'Καθαρή αξία Α', 80, 'right'),
      array( 'Καθαρή αξία Β', 80, 'right'),
      array( 'Καθαρή αξία Γ', 80, 'right'),
      array( 'Καθαρή αξία Δ', 80, 'right'),
      array( 'Καθαρή αξία Ε', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Αξία ΦΠΑ Α', 80, 'right'),
      array( 'Συνολική αξία', 80, 'right')
      );
   
   while ($o1=$rs->FetchNextObject()) {
      if (is_null($o1->GT)) { // tameiakes
         $o1->GT = $o1->N1 + $o1->N2 + $o1->N3 + $o1->N4 + $o1->N5 + $o1->V1 + $o1->V2 + $o1->V3 + $o1->V4;
      }
          
      $row1=array();
      
      $row1[]=myhtml($_SESSION['ST_GROUPBY']==2?$o1->EAFDSS:$o1->VATNO);
      $row1[]=$o1->DOCID;
      $row1[]=$o1->CN;
      $row1[]=$o1->N1;
      $row1[]=$o1->N2;
      $row1[]=$o1->N3;
      $row1[]=$o1->N4;
      $row1[]=$o1->N5;
      $row1[]=$o1->V1;
      $row1[]=$o1->V2;
      $row1[]=$o1->V3;
      $row1[]=$o1->V4;
      $row1[]=$o1->GT;
      
      $gr1->rows[]=$row1;
   }
   $rs->Close();
   
   $gr1->play();
   
   echo "<div id=tbar2>
      <a href=\"javascript:goTo(110)\">Υποβληθέντα αρχεία S.TXT</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </div>";
}
//--------------------------------------
function view_s_files()
{
   global $x2;
   $db=&$x2->db;
   
   if (isset($_REQUEST['FTYPE'])) {
      $_SESSION['FTYPE']=$_REQUEST['FTYPE'];
   }
   
   $ar1=array('F_VATNO', 'F_EAFDSS', 'F_ZNR_FROM', 'F_ZNR_TO', 'F_FNAMEDATE_FROM',
      'F_FNAMEDATE_TO', 'F_FC_FROM', 'F_FC_TO', 'F_URESULT' );
      
   foreach ($ar1 as $f1) {
      if (isset($_REQUEST[$f1])) {
         $_SESSION[$f1]=$_REQUEST[$f1];
      }
   }
?>   
<h1>Υποβληθέντα αρχεία S.ΤΧΤ</h1>     
<script>
var id;
$(function(){
   $('#popmenu2').dialog({autoOpen:false, modal:true, width:360});
   $(document.goForm2.F_FNAMEDATE_FROM).datepicker();
   $(document.goForm2.F_FNAMEDATE_TO).datepicker();
   
   $('#popmenu3').dialog({autoOpen:false, modal:true, width:360});
} );
function oclick(stage, row, col)
{
	id = this.cells(row, 1).getValue() + ';' + this.cells(row, 2).getValue(); // eafdss;Z
   show_popup(document.getElementById('popmenu'));
}
function winRet(x)
{
	switch (x)
	{
   case 112: // recheck signature
   case 141: // logfile of S
   case 142: // S contents 
      goRecord(x,id);
      break;
	case 111:
      goRecDelete(111,id);
      break;
   }
}
function onFilter()
{
   $('#popmenu2').dialog('open');
}
function onStats()
{
   $('#popmenu3').dialog('open');
}
function onAnalysis(x)
{
   $('.tbIN').toggle();
   return;
}
</script>
<?php
   $pg=getPage();
	$pgsz=getPageSize('grid1');
   
   $where=false;
   $data=array();
   
   $query_C="SELECT COUNT(*) FROM ese_esi T3 WHERE EAFDSS=:EAFDSS AND ZNR=:ZNR";
   $stmtc=$db->Prepare($query_C);
  
   if (!empty($_SESSION['F_VATNO']) || $x2->ULEVEL==2) { // single AFM
      $query = "SELECT T1.*, T2.VATNO FROM ese_z T1 
         LEFT JOIN ese_vatno T2 ON (T2.EAFDSS=T1.EAFDSS) ";
      $needVatno=false;
   }
   else { // generic
      $query_AFM="SELECT VATNO FROM ese_vatno WHERE EAFDSS=:EAFDSS";
      $stmtafm=$db->Prepare($query_AFM);
      
      $query = "SELECT T1.* FROM ese_z T1";
      $needVatno=true;
   }
    
   if ($x2->ULEVEL==2) { // user
      $query .= " WHERE (T2.USERID=:USERID) ";
      $data['USERID']=$x2->USERID;
      $where=true;
   } 
   
   if (!empty($_SESSION['F_VATNO'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T2.VATNO=:F_VATNO ";
      $data['F_VATNO']=$_SESSION['F_VATNO'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_EAFDSS'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T1.EAFDSS=:F_EAFDSS ";
      $data['F_EAFDSS']=$_SESSION['F_EAFDSS'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_ZNR_FROM'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T1.ZNR>=:F_ZNR_FROM ";
      $data['F_ZNR_FROM']=(int)$_SESSION['F_ZNR_FROM'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_ZNR_TO'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T1.ZNR<=:F_ZNR_TO ";
      $data['F_ZNR_TO']=(int)$_SESSION['F_ZNR_TO'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_FNAMEDATE_FROM'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T1.FNAMEDATE>=:F_FNAMEDATE_FROM ";
      $data['F_FNAMEDATE_FROM']=implode('-',array_reverse(explode('-',$_SESSION['F_FNAMEDATE_FROM'])));
      $where=true;
   }
   
   if (!empty($_SESSION['F_FNAMEDATE_TO'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " T1.FNAMEDATE<=:F_FNAMEDATE_TO ";
      $data['F_FNAMEDATE_TO']=implode('-',array_reverse(explode('-',$_SESSION['F_FNAMEDATE_TO'])));
      $where=true;
   }
   
   if (!empty($_SESSION['F_FC_FROM'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " (SELECT COUNT(*) FROM ese_esi T3 WHERE T3.EAFDSS=T1.EAFDSS AND T3.ZNR=T1.ZNR)>=:F_FC_FROM ";
      $data['F_FC_FROM']=(int)$_SESSION['F_FC_FROM'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_FC_TO'])) {
      $query .= $where?" AND ":" WHERE ";       
      $query .= " (SELECT COUNT(*) FROM ese_esi T3 WHERE T3.EAFDSS=T1.EAFDSS AND T3.ZNR=T1.ZNR)<=:F_FC_TO ";
      $data['F_FC_TO']=(int)$_SESSION['F_FC_TO'];
      $where=true;
   }
   
   if (!empty($_SESSION['F_URESULT'])) {
      $query .= $where?" AND ":" WHERE ";
      if ((int)$_SESSION['F_URESULT']==1) { // Yes
         $query .= " URESULT=1 ";
      }
      else { // No
         $query .= " (URESULT=0 OR URESULT IS NULL) ";
      }       
      $where=true;
   }

   if ($x2->ULEVEL==2) { // user
      $query .= " ORDER BY T1.EAFDSS, T1.ZNR DESC";
   }
   
   if (!($rs=$db->PageExecute($query,$pgsz,$pg,$data))) {
		uerror( $db->ErrorMsg() );
		return GoBack();
	}
   
   $gr1=new cXRID('grid1');
   
   array_push( $gr1->cols,        
      array( 'ΑΦΜ', 80),
		array( 'Σειριακός', 80),
      array( 'Z', 80),
		array( 'Ημ/νία αρχείου', 100),
		array( 'Υποβλήθηκε', 120),
      array( 'Πλήθος E', 60),
      array( 'Λάθη', 60)
   );
   
   while ($o1=$rs->FetchNextObject()) {
      if ($needVatno) {
         $vatno='';
         $data2=array('EAFDSS'=>$o1->EAFDSS );
         if (($rs2=$db->Execute($stmtafm, $data2))!==false) {
            if ($row2=$rs2->FetchRow()) {
               $vatno=$row2[0];
            }
            $rs2->Close();
         }
      }
      else {
         $vatno=$o1->VATNO;
      }
      
      $fc=0;
      $data2=array('EAFDSS'=>$o1->EAFDSS, 'ZNR'=>$o1->ZNR);
      if (($rs2=$db->Execute($stmtc,$data2))!==false) {
         if ($row2=$rs2->FetchRow()) {
            $fc=$row2[0];
         }
         $rs2->Close();
      }
   
		$row1=array();
      
      $row1[] = $vatno;
      $row1[] = $o1->EAFDSS;
      $row1[] = $o1->ZNR;                                                         
      $row1[] = $o1->FNAMEDATE;
      $row1[] = $o1->LASTUPDATE;
      $row1[] = $fc;
      $row1[] = $o1->URESULT>0?"NAI":"Οχι";
      
      $gr1->rows[] = $row1;
   }
   $epage=$rs->LastPageNo();
	$rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
	print_page_navEx($pg,$epage,110);
	echo RefreshStr(110)."&nbsp;| <b><a href=\"javascript:onFilter()\"> <input type=checkbox ";
   if (!empty($where)) { echo "checked"; }
   echo " id=filter disabled>Φίλτρο</a></b> | <b><a href=\"javascript:onStats()\">Στατιστικά</a></b> | 
      <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b></div>";
      
   $selx=array(
      array(142, '../img/open_folder.gif', 'Περιεχόμενα Ζ'),
      array(112, '../img/adjust.png', 'Επανέλεγχος υπογραφής'),
      array(141, '../img/button_detail.png', 'Z logfile')
      );
   if ($x2->ULEVEL<2 || $x2->EMAIL==='~inca') {
      $selx[] = '<hr>';
		$selx[] = array(111, '../img/drop.png', 'Delete Z' );
   }

   draw_popup($selx);
?>
<div id=popmenu2 title="Καθορισμός φίλτρου">
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm2">
<input type=hidden name="FUNCTION" value="110">
<table>
<tr>
   <td>ΑΦΜ</td>   
   <td><input type=text name="F_VATNO" value="<?php echo myhtml(@$_SESSION['F_VATNO']); ?>" maxlength=20></td>
</tr>
<tr>
   <td>Σειριακός ΦΗΜ</td>   
   <td><input type=text name="F_EAFDSS" value="<?php echo myhtml(@$_SESSION['F_EAFDSS']); ?>" maxlength=14></td>
</tr>
<tr>
   <td>Z από</td>   
   <td><input type=text name="F_ZNR_FROM" value="<?php echo myhtml(@$_SESSION['F_ZNR_FROM']); ?>" maxlength=4></td>
</tr>
<tr>
   <td>Z ως</td>   
   <td><input type=text name="F_ZNR_TO" value="<?php echo myhtml(@$_SESSION['F_ZNR_TO']); ?>" maxlength=4></td>
</tr>
<tr>
   <td>Ημερομηνία από</td>   
   <td><input type=text name="F_FNAMEDATE_FROM" value="<?php echo myhtml(@$_SESSION['F_FNAMEDATE_FROM']); ?>" readonly 
      maxlength=10><button type=button class=redc title="Clear" onclick="this.form.F_FNAMEDATE_FROM.value='';">C</button></td>
</tr>
<tr>
   <td>Ημερομηνία ως</td>   
   <td><input type=text name="F_FNAMEDATE_TO" value="<?php echo myhtml(@$_SESSION['F_FNAMEDATE_TO']); ?>" readonly 
      maxlength=10><button type=button class=redc title="Clear" onclick="this.form.F_FNAMEDATE_TO.value='';">C</button></td>
</tr>
<tr>
   <td>Πλήθος Ε από</td>   
   <td><input type=text name="F_FC_FROM" value="<?php echo myhtml(@$_SESSION['F_FC_FROM']); ?>" maxlength=4></td>
</tr>
<tr>
   <td>Πλήθος Ε ως</td>   
   <td><input type=text name="F_FC_TO" value="<?php echo myhtml(@$_SESSION['F_FC_TO']); ?>" maxlength=4></td>
</tr>
<tr>
   <td>Λάθη</td>
   <td>
      <label><input name="F_URESULT" type=radio <?php if (@$_SESSION['F_URESULT']==1) { echo 'checked';} ?> value="1">ΝΑΙ</label> 
      <label><input name="F_URESULT" type=radio <?php if (@$_SESSION['F_URESULT']==2) { echo 'checked';} ?> value="2">ΟΧΙ</label>
      <label><input name="F_URESULT" type=radio <?php if (@$_SESSION['F_URESULT']==0) { echo 'checked';} ?> value="0">Ανεξάρτητα</label>
   </td>
</tr>
<tr>
   <td></td>
   <td><input type=submit class=bigButton value="Εφαρμογή"></td>
</tr>
</table>
</form>
</div>

<div id=popmenu3 title="Στατιστικά">
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm3">
<input type=hidden name="FUNCTION" value="113">
<table><?php
   if ($x2->ULEVEL<2) { // super user or admin
      echo "<tr>
         <td>Τρόπος</td>
         <td><label><input type=radio name=\"ALLREC\" value=\"0\" checked onclick=\"onAnalysis(1)\"> Αναλυτικά</label>
            <label><input type=radio name=\"ALLREC\" value=\"1\" onclick=\"onAnalysis(0)\"> Ολες οι εγγραφές</label></td>
         </tr>
         <tbody class=tbIN>
         <tr>
         <td>Συγκέντρωση</td>
         <td><select name=\"GROUPBY\"> 
         <option value=\"0\">Ανά ΑΦΜ</option>
         <option value=\"1\">Ανά ΑΦΜ/ τύπο παραστατικού</option>
         <option value=\"2\">Ανά ΕΑΦΔΣΣ/ τύπο παραστατικού</option>
         </td>
         </tr>
         </tbody>
         <tbody class=tbIN style=\"display:none\">
         <tr>
         <td>Συγκέντρωση</td>
         <td><select name=\"ALLRECBY\"> 
         <option value=\"0\">Ανά μήνα</option>
         <option value=\"1\">Ανά τύπο παραστατικού</option>
         <option value=\"2\">Ανά τύπο παραστατικού + μήνα</option>
         </td>
         </tr>
         </tbody>";
   }
?><tbody class=tbIN>
<tr>
   <td>Μήνας</td>
   <td><?php $thisYear=date('Y'); $thisMon=date('m'); ?>
      <select name="MONTH"><?php prSelect(1,12,$thisMon); ?></select>
      <select name="YEAR"><?php prSelect(2013,$thisYear,$thisYear); ?></select>
   </td>
</tr>
</tbody>
<tr>
   <td></td>
   <td><input type=submit class=bigButton value="Ερώτηση"></td>
</tr>
</table>
</form>   
</div>
<?php
}
//--------------------------------------
function view_S_contents($byHand=false)
{
   global $x2;
   $db=&$x2->db;
   
   $ar1=explode(';', $_REQUEST['RECORDID']);
   
   $mtype=0; // pretend it is EAFDSS
   
   if (!$byHand) {
      echo "<h1>Περιεχόμενα για ".$ar1[0].", Z=".$ar1[1]."</h1>";
   
      $query="SELECT MTYPE FROM ese_vatno WHERE EAFDSS=:EAFDSS";
      $data=array('EAFDSS'=>gr_to_eng($ar1[0]));
      if (!($rs=$db->Execute($query,$data))) {
		   uerror( $db->ErrorMsg() );
		   return;
	   }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) {
         uerror( "Η ΕΑΦΔΣΣ ".myhtml($ar1[0])." δεν βρέθηκε!" );
      }
      else {
         $mtype=$row[0];
      }
   }
   
   $query="SELECT * FROM ese_esi WHERE EAFDSS=:EAFDSS AND ZNR=:ZNR ORDER BY DAILY";
   $data=array('EAFDSS'=>gr_to_eng($ar1[0]), 'ZNR'=>$ar1[1]);
   if (!($rs=$db->Execute($query,$data))) {
		uerror( $db->ErrorMsg() );
		return;
	}
   
   $gr1=new cXRID('grid6');
   
   $gr1->cols=array(
         array( 'Ημερήσιος α/α', 80),
         array( 'Προοδευτικός α/α', 80),
         array( 'Ημ/νια+ώρα', 80),
         array( 'ΑΦΜ εκδότη', 80)
         );
   //if ($mtype==0) {
      $gr1->cols[] = array( 'ΑΦΜ λήπτη', 80);
   //}
   array_push($gr1->cols,
         array( 'Κάρτα αποδείξεων', 80) );
   //if ($mtype==0) {
      array_push($gr1->cols,
         array( 'Παραστατικό', 80),
         array( 'Σειρά', 80),
         array( 'Αριθμός', 80)
         );
   //}
   array_push($gr1->cols,
         array( 'Καθαρή αξία Α', 80, 'right'),
         array( 'Καθαρή αξία Β', 80, 'right'),
         array( 'Καθαρή αξία Γ', 80, 'right'),
         array( 'Καθαρή αξία Δ', 80, 'right'),
         array( 'Καθαρή αξία Ε', 80, 'right'),
         array( 'Αξία ΦΠΑ Α', 80, 'right'),
         array( 'Αξία ΦΠΑ Β', 80, 'right'),
         array( 'Αξία ΦΠΑ Γ', 80, 'right'),
         array( 'Αξία ΦΠΑ Δ', 80, 'right'),
         array( 'Γενικό σύνολο', 80, 'right'),
         array( 'Κωδ. νομίσματος', 90),
         array( 'Κωδ. καυσίμου', 90),
         array( 'Λίτρα', 90, 'right')
         );
   //if ($mtype==0) {
      array_push($gr1->cols,
         array( 'Αρθρο μηδενικού ΦΠΑ', 80),
         array( 'Παρακράτηση φόρου', 80, 'right'),
         array( 'Επιστροφές', 80, 'right'),
         array( 'Αξία επιστρ.', 80, 'right')
         );
   //}
   $gr1->cols[] = array( 'Υπογραφή', 80);
   
   while ($o1=$rs->FetchNextObject()) {
		$row1=array();
      
      $row1[]=$o1->DAILY;
      $row1[]=$o1->PROGRESSIVE;
      
      $d1=$o1->FDATETIME;
      $row1[]=substr($d1,0,4).'-'.substr($d1,4,2).'-'.substr($d1,6,2).' '.substr($d1,8,2).':'.substr($d1,10,2);
      
      $row1[]=myhtml($o1->ISSUER_AFM);
      //if ($mtype==0) {
         $row1[]=myhtml($o1->RECV_AFM);
      //}
      $row1[]=myhtml($o1->KARTAPOD);
      
      //if ($mtype==0) {
         $row1[]=myhtml($o1->DOCID."# ".$x2->doc_name($o1->DOCID));
      
         $row1[]=myhtml($o1->SEIRA);
         $row1[]=myhtml($o1->DOCNR);
      //}
      $row1[]=sprintf("%.2f", $o1->NETVALA);
      $row1[]=sprintf("%.2f", $o1->NETVALB);
      $row1[]=sprintf("%.2f", $o1->NETVALC);
      $row1[]=sprintf("%.2f", $o1->NETVALD);
      $row1[]=sprintf("%.2f", $o1->NETVALE);
      $row1[]=sprintf("%.2f", $o1->VATVALA);
      $row1[]=sprintf("%.2f", $o1->VATVALB);
      $row1[]=sprintf("%.2f", $o1->VATVALC);
      $row1[]=sprintf("%.2f", $o1->VATVALD);
      if ($mtype==0) {
         $row1[]=sprintf("%.2f", $o1->GTOTAL);
      }
      else {
         $gt = $o1->NETVALA + $o1->NETVALB + $o1->NETVALC + $o1->NETVALD + $o1->NETVALE +
            $o1->VATVALA + $o1->VATVALB + $o1->VATVALC + $o1->VATVALD;

         $row1[]=sprintf("<b>%.2f</b>", $gt);
      }
      
      $row1[]=myhtml($o1->CURCODE."# ".$x2->currency_name($o1->CURCODE));

      $row1[]=myhtml($o1->KWD_FUEL.'# '.$x2->fuel_name($o1->KWD_FUEL));
      $row1[]=sprintf("%.3f", $o1->LITRA_FUEL);
      
      //if ($mtype==0) {
         $row1[]=myhtml($o1->ARTHRO_FPA);
         $row1[]=$o1->PARAKRATISI_FOROU;
      //}
      $row1[]=myhtml($o1->RETCOUNT);
      $row1[]=sprintf("%.2f", $o1->RETVALUE);
      $row1[]=myhtml($o1->HEXSIGN);
    
      $gr1->rows[]=$row1;  
   }
   $rs->Close();
   
   $gr1->play();
?>
<script>
function AddRow()
{
}
</script>
<div id=tbar2>
   <?php
      if ($byHand) {
         echo "<button type=button class=NavButton onclick=\"AddRow()\"><img src=\"../img/plus.gif\"></button>";      
      }
   ?>
   <b>
   <a href="javascript:goTo(110)">Υποβληθέντα αρχεία S.TXT</a> |
   <a href="javascript:goTo(6)">Επιστροφή</a>
   </b>
</div>
<?php
}
//--------------------------------------
function by_hand_ask_date()
{
?>
<h1>Καταχώριση χειρόγραφων</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="133">
<table>
<tr>
   <td>Ημερομηνία</td>   
   <td><input type=text name="FORDATE" value="<?php echo date('d-m-Y'); ?>" readonly style="background-color:white"></td>
</tr>   
<tr>
   <td></td>   
   <td>
      <input type=submit class=bigButton value="Συνέχεια">
      <input type=button  class=bigButton value="Ακυρο" onclick="javascript:goTo(6)">
   </td>
</tr>   
</table>
</form>
<script>
$(document.goForm.FORDATE).datepicker();
</script>
<?php
}
//--------------------------------------
function by_hand_ask_input()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Καταχώριση χειρόγραφων ".$_REQUEST['FORDATE']."</h1>";
   
   $ar1=explode('-', $_REQUEST['FORDATE']); //  d-m-Y
   $day1=mktime(0,0,0, $ar1[1], $ar1[0], $ar1[2]);
   
   $ar2=getdate();
   $today=mktime(0,0,0, $ar2['mon'], $ar2['mday'], $ar2['year']);
   
   do {
      if ($day1>$today) {
         uerror("Δεν μπορείτε να εισάγετε δεδομένα για μελλοντική ημερομηνία!");
         break;
      }
   
      $fordate=implode('-', array_reverse($ar1 ) );
   
      $query="SELECT HEXSIGN FROM ese_z WHERE EAFDSS='VIRTUAL0001' AND FNAMEDATE=:FNAMEDATE";
      $data=array('FNAMEDATE'=>$fordate);   
      if (($rs=$db->Execute($query,$data))===false) {
         uerror( $db->ErrorMsg() );
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row!==false && !empty($row[0])) {
         uerror("Ηδη έχει κλείσει η ημέρα ".$_REQUEST['FORDATE']);
         break;
      }
      
      view_S_contents(true);
      return;
      
   } while (false);
   
   GoBack();
}
//--------------------------------------
function correct_HMERA()
{
   global $x2;
   $db=&$x2->db;
   
   do {
      $query="UPDATE ese_esi SET HMERA=SUBSTR(FDATETIME,1,8) WHERE (HMERA||123)='123'";
      if (!$db->Execute($query)) {
         echo $db->Errormsg();
         break;
      }
      echo "Done";
   } while (false);
   
   GoBack();
}
//--------------------------------------
function correct_other_fields()
{
   global $x2;
   $db=&$x2->db;
   
   do {
      $query="UPDATE ese_esi SET Z_EAFDSS=EAFDSS WHERE (Z_EAFDSS||'ABCDE')='ABCDE'";
      if (!$db->Execute($query)) {
         echo "1# ".$db->Errormsg();
      }
      else {
         echo "<div>Z_EAFDSS: corrected ".$db->Affected_Rows()." records</div>";
      }
      
      $query="UPDATE ese_esi SET Z_ZNR=ZNR WHERE (Z_ZNR||'ABCDE')='ABCDE'";
      if (!$db->Execute($query)) {
         echo "2# ".$db->Errormsg();
      }
      else {
         echo "<div>Z_ZNR: corrected ".$db->Affected_Rows()." records</div>";
      }
      
      /*
      $query="UPDATE ese_esi SET U_VATNO=ISSUER_AFM WHERE (U_VATNO||'ABCDE')='ABCDE'";
      if (!$db->Execute($query)) {
         echo "3# ".$db->Errormsg();
      }
      else {
         echo "<div>U_VATNO: corrected ".$db->Affected_Rows()." records</div>";
      }
      */
      
      echo "<div>Operation completed</div>";        
   } while (false);
   
   GoBack();
}
//--------------------------------------
function log_to_greek()
{
   global $x2;
   $db=&$x2->db;
   
   $query="UPDATE ese_log SET FNAME=:FNAME WHERE RID=:RID";
   $stmt=$db->Prepare($query); // no error check
   
   $nrec=0;
   $query="SELECT RID, FNAME FROM ese_log";
   if (($rs=$db->Execute($query))===false) {  
      uerror( __LINE__.$db->ErrorMsg() );
      return;
   }
   while ($o1=$rs->FetchNextObject()) {
      $fname2 = gr_to_eng($o1->FNAME);
      if ($fname2 !== $o1->FNAME) {
         $data=array('FNAME'=>$fname2, 'RID'=>$o1->RID);
         if (!$db->Execute($stmt,$data)) {
            uerror( __LINE__.$db->ErrorMsg() );
            break;
         }
         else {
            $nrec++;
         }
      }
   }
   $rs->Close();
   echo "Done for $nrec records";
}
//--------------------------------------
function view_log($for_S1)
{
   global $x2;
   $db=&$x2->db;
   
   if ($for_S1) {
      if (!empty($_REQUEST['RECORDID'])) {
         $ar1=explode(';', $_REQUEST['RECORDID']);
         $_SESSION['S11']=$ar1[0];
         $_SESSION['Z4']=sprintf("%04d", $ar1[1]);
      }
      $s11=$_SESSION['S11'];
      $z4=$z42=$_SESSION['Z4'];
   
      echo "<h1>Αρχείο Log για ".$ar1[0].", Z=".$ar1[1]."</h1>";
   }
   else {
      echo "<h1>Αρχείο Log</h1>";
   }
   
   $ar1=array('FVAL', 'FVAL2', 'FANONYM');
   foreach ($ar1 as $f1) {
      if (isset($_REQUEST[$f1])) {
         $_SESSION[$f1]=$_REQUEST[$f1];
      }
   }
?>
<script>
var rid, s11, z4, eret;
$(function() {
   $('#aboutS11').dialog({autoOpen:false, modal:true, width:450, height:230, buttons: {
        Ok: function() {
          $( this ).dialog( "close" );
        }
      } });
});
function oclick(stage, row, col)
{
   rid=this.cells(row, 0).getValue();
   s11=this.cells(row, 2).getValue();
   z4=this.cells(row, 3).getValue();
   eret=this.cells(row, 7).getValue();
   show_popup();
}
function winRet(x)
{
	switch (x)
   {
   case 1:
      hide_popup();
      $('#aboutS11').load('esend2.php', {FUNCTION:1, S11:s11} ).dialog('open');
      break;
   case 2: // message
      $('#popmenu2').load('esend2.php', {FUNCTION:2, RID:rid} );
      show_popup('popmenu2');
      break;
   case 142: // show Z contents
      if (eret!=0) {
         window.alert('Καταγράφηκε λάθος. Δεν υπάρχουν περιχόμενα Ζ!');
         hide_popup();
         return;
      }
      goRecord(x, s11+';'+z4);
      break;
   }
}
function onFilter()
{
   $('#popmenu2').html('<table>'+
      '<tr>'+
      '<td class=bgHeader colspan=2>Καθορισμός φίλτρου</td>'+
      '</tr>'+ 
      '<tr>'+
      '<td class=bgLabel>Σειριακός ΦΗΜ</td>'+
      '<td class=bgInput><input id=fval type=text value="<?php echo myhtml(@$_SESSION['FVAL']); ?>" maxlength=14></td>'+
      '</tr>'+
      '<tr>'+
      '<td class=bgLabel>Λεκτικό μηνύματος</td>'+
      '<td class=bgInput><input id=fval2 type=text value="<?php echo myhtml(@$_SESSION['FVAL2']); ?>"></td>'+
      '</tr>'+
      '<tr>'+
      '<td></td>'+
      '<td class=bgButton><input type=button value="Εφαρμογή" onclick="onFApply()"></td>'+
      '</tr></table>');
      
   show_popup('popmenu2');
}
function setupForm()
{
   var g=document.goForm;
	if (g==null) {
      g=document.createElement('FORM');
      g.name='goForm';
      document.body.appendChild(g);
   }
   
   var o2=g.FTYPE;
   if (o2==undefined) {
      o2=document.createElement('INPUT');
      o2.type='hidden';
      o2.name='FTYPE';
      g.appendChild(o2);
   }
}
function onFApply()
{
   setupForm();

   var g=document.goForm;
   var o2=g.FTYPE;
   o2.value = $('#fIP').is(":checked")?0:1;
   
   var o3=g.FVAL;
   if (o3===undefined) {
      o3=document.createElement('INPUT');
      o3.type='hidden';
      o3.name='FVAL';
      g.appendChild(o3);
   }
   o3.value = $('#fval').val();
   
   o3=g.FVAL2;
   if (o3===undefined) {
      o3=document.createElement('INPUT');
      o3.type='hidden';
      o3.name='FVAL2';
      g.appendChild(o3);
   }
   o3.value = $('#fval2').val();
   
   goTo(140);
}
function onAnonym()
{
   setupForm();

   var g=document.goForm;
   var o2=g.FTYPE;
   o2.value = $('#fIP').is(":checked")?0:1;
   
   var o3=g.FANONYM;
   if (o3==undefined) {
      o3=document.createElement('INPUT');
      o3.type='hidden';
      o3.name='FANONYM';
      g.appendChild(o3);
   }
   o3.value = $('#anonym').is(':checked')?1:0;
   
   goTo(140);
}
</script>
<?php   
   $pg=getPage();
	$pgsz=getPageSize('grid2');

   if (isset($s11)) {
      $sl=mb_strlen($s11);
      if ($sl<11) { $sl=11; } // normalize
   }
   else {
      $sl=11;
   }
   
   $query="SELECT T1.RID, T1.FNAME, T1.IV, T1.REMOTEADDR, T1.RESULTCODE, SUBSTR(T1.MESSAGE,1,$sl) MSG, T1.LASTUPDATE, T2.MTYPE FROM ese_log T1
      LEFT JOIN ese_vatno T2 ON ( T2.EAFDSS=SUBSTR(T1.FNAME,1,11) ) ";
      
   if ($for_S1) { // to be changed 11-14
      $query .= " WHERE SUBSTR(T1.FNAME,1,$sl)=:S11 AND (( T2.MTYPE=0 AND SUBSTR(T1.FNAME,22,4)=:Z4 ) OR ( T2.MTYPE=1 AND SUBSTR(T1.FNAME,12,4)=:Z42 ))
         ORDER BY T1.RID DESC";
      $data=array('S11'=>$s11, 'Z4'=>$z4, 'Z42'=>$z42);
   }
   else {
      $data=array();
      $query .= " WHERE 1=1 ";
      
      if ($x2->ULEVEL==2) { // specific user only
         if (@$_SESSION['FANONYM']==1) {
            $query .= " AND (T2.USERID=:USERID OR T2.USERID IS NULL) ";
         }
         else {
            $query .= " AND T2.USERID=:USERID ";
         }
         $data['USERID']=$x2->USERID;
      }
      
      if (!empty($_SESSION['FVAL'])) {
         $query .= " AND SUBSTR(T1.FNAME,1,11)=:FVAL "; // to be changed 11-14
         $data['FVAL']=$_SESSION['FVAL'];
      }
      
      if (!empty($_SESSION['FVAL2'])) {       
         $query .= " AND T1.MESSAGE LIKE :FVAL2 ";
         $data['FVAL2']='%'.$_SESSION['FVAL2'].'%';
      }
      
      $query .= " ORDER BY T1.RID DESC";
   }
   
   if (!($rs=$db->PageExecute($query,$pgsz,$pg,$data))) {
		uerror( $db->ErrorMsg() );
		return;
	}
   
   $gr1=new cXRID('grid2');
   
   array_push( $gr1->cols,
      array( 'ID', 60),
      array( 'Ονομα αρχείου', 120),
		array( 'Σειριακός', 80),
      array( 'Z', 80),
		array( 'Ημ/νία ονόματος', 100),
      array( 'IV', 80),
      array( 'Remote addr.', 100),
		array( 'Αποτέλεσμα', 60),
      array( 'Μήνυμα(τα)', 90),
		array( 'Υποβλήθηκε', 120)
   );
   
   while ($o1=$rs->FetchNextObject()) {
		$row1=array();
      
      $row1[] = $o1->RID;
      $row1[] = myhtml($o1->FNAME);
      $row1[] = myhtml(mb_substr($o1->FNAME,0,11)); // eafdss (to be changed 11-14)
      
      if ($o1->MTYPE==0) { // EAFDDSS
         $row1[] = mb_strlen($o1->FNAME)>21 ? myhtml(mb_substr($o1->FNAME,21,4)) : ''; // Z4
         $row1[] = mb_strlen($o1->FNAME)>11 ? myhtml(mb_substr($o1->FNAME,11,6)) : ''; // file date
      }
      else { // FHM
         $row1[] = mb_strlen($o1->FNAME)>11 ? myhtml(mb_substr($o1->FNAME,11,4)) : ''; // Z4
         $row1[] = mb_strlen($o1->FNAME)>15 ? myhtml(mb_substr($o1->FNAME,15,6)) : ''; // file date
      }
      
      $row1[] = myhtml($o1->IV);
      $row1[] = myhtml($o1->REMOTEADDR);
      $row1[] = $o1->RESULTCODE;
      $row1[] = myhtml( mb_strlen($o1->MSG)>10?(mb_substr($o1->MSG,0,10).'...'):$o1->MSG );
      $row1[] = $o1->LASTUPDATE;
      
      $gr1->rows[] = $row1;
   }
   $epage=$rs->LastPageNo();
	$rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
	print_page_navEx($pg,$epage,$for_S1?141:140);
   if (!$for_S1) { // global LOG
      echo RefreshStr(140)." | <b><a href=\"javascript:onFilter()\"><input type=checkbox ";
      if (!empty($_SESSION['FVAL']) || !empty($_SESSION['FVAL2'])) { echo "checked"; }
      echo " id=filter disabled>Φίλτρο</a></b> 
         | <b><label><input type=checkbox id=anonym onclick=\"onAnonym()\" ";
      if (!empty($_SESSION['FANONYM'])) { echo "checked"; }
      echo "> Ανώνυμες</label></b>";
   } 
   echo " | <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>".
		"</div>";
      
   $selx=array(
      array(2, '../img/report16x16.png', 'Μήνυμα'),
      array(142, '../img/open_folder.gif', 'Περιεχόμενο Ζ'),
      array(1, '../img/info_pop.png', 'Εταιρία συντήρησης')
      );
   draw_popup($selx);
      
?>
<div id=popmenu2 class=POPMENU></div>";
<div id=aboutS11 title="Εταιρία συντήρησης ΕΑΦΔΣΣ"></div>
<?php
}
//--------------------------------------
function reset_user_level()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL!=0) // precaution
      return;
   
   $ar1=explode(';', $_REQUEST['RECORDID']);
   if (count($ar1)<2)
      return;
      
   if ($ar1[0]!=0 && $ar1[0]!=1)
      return;
      
   $query="UPDATE ese_user SET ULEVEL=:ULEVEL WHERE USERID=:USERID";
   $data=array( 'ULEVEL'=>(int)$ar1[0], 'USERID'=>(int)$ar1[1] );
   if (!$db->Execute($query,$data)) {
      uerror($db->ErrorMsg());
      return;
   }
}
//--------------------------------------
function re_list_FHM()
{
   // FHM for userid = $_REQUEST['RECORDID']
   global $x2;
   $db=&$x2->db;
   
   if (empty($x2->USERID) || $x2->ULEVEL==2) { // precaution 
      return home_page();
   }
   
   $userid = (int)$_REQUEST['RECORDID']; 
   echo "<h1>ΕΑΦΔΣΣ και Ταμειακές του χρήστη $userid</h1>";

   $query="SELECT VATNO FROM ese_user WHERE USERID=:USERID";
   $data=array('USERID'=>$userid);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row===false) {
      uerror("Δεν βρέθηκε ο χρήστης!");
      return;
   }
   $afm=$row[0];
   
   $query="SELECT MTYPE, EAFDSS, AESKEY FROM ese_vatno 
      WHERE VATNO=$afm
      ORDER BY EAFDSS";
   if (($rs=$db->Execute($query))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   
   $gr1=new cXRID('grid8');
   
   array_push( $gr1->cols,
		array( 'ΑΦΜ', 120),
      array( 'Τύπος', 120),
		array( 'Σειριακός', 120),
		array( 'AES κλειδί (Hex values)', 420)
   );

   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[] = myhtml($afm);
      $row1[]= ($o1->MTYPE==0?'ΕΑΦΔΣΣ':'Ταμειακή');
      $row1[] = myhtml($o1->EAFDSS);
      $row1[] = myhtml($o1->AESKEY);
      
      $gr1->rows[]=$row1;
   }
   $rs->Close();
   
   $gr1->play();
   
   echo "<div id=tbar2>
      <button type=button ".($x2->ULEVEL==3?"disabled":"onclick=\"goRecord(503,'$afm')\"").">Ανανέωση</button>
      <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>
      </div>";
}
//--------------------------------------
function ask_for_ldap()
{
?>
   <form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
   <input type=hidden name="FUNCTION" value="507">
   <table>
   <tr>
      <td>LDAP user</td>
      <td><input type=text name="LDAP_USER"></td>
   </tr>
   <tr>
      <td></td>
      <td>
         <input type=submit value="Πληροφόρηση">
         <input type=button value="Ακυρο" onclick="goTo(6)">
      </td>
   </tr>
   </table>
   </form> 
<?php   
}
//--------------------------------------
function show_ldap_info()
{
   global $x2;
   
   $ldaphost = "ldap://xoid.gsis.gr";  // your ldap servers
   $ldapport = 389;                 // your ldap server's port number
   
   do {
      if (($ldapconn = ldap_connect($ldaphost/*, $ldapport*/))===false) {
         uerror("LDAP connection failed!");
         break;
      } 
      
      $user=$_REQUEST['LDAP_USER'];
      if (($result = @ldap_search( $ldapconn, "cn=Users, dc=gsis, dc=gr", "uid=$user" ))===false) {
         uerror("LDAP search failed!");
         ldap_close($ldapconn);
         break;
      }
      
      if (($data = @ldap_get_entries($ldapconn, $result))===false) {
         uerror("LDAP get entries failed!");
         ldap_close($ldapconn);
         break;
      } 
      
      if (count($data)==0 || empty($data[0]['dn'])) {
         uerror("Login failed!");
         ldap_close($ldapconn);
         break;
      }

      ldap_unbind($ldapconn);
      
      pre($data);
      
   } while (false);
   
   echo "<div id=tbar2>
      <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>
      </div>";
}
//--------------------------------------
function upd_parameters()
{
   global $x2;
   $db=&$x2->db;
   
   $data=array('AGENTID'=>0, 'RESELID'=>0, 'PGROUP'=>'Esend.params', 'PNAME'=>'XML_LOCATION', 'PVALUE'=>$_REQUEST['XML_LOCATION']);
   $prim=array('AGENTID', 'RESELID', 'PGROUP', 'PNAME');
   
   if (!$db->Replace('reselprefex', $data, $prim, true))
      uerror($db->ErrorMsg());
   else
      umessage("Ενημερώθηκε!");
      
   if (!is_dir($data['PVALUE']))
      uerror("Ο κατάλογος δεν υπάρχει: ".$data['PVALUE']);
}
//--------------------------------------
function dir_contents()
{
   echo "Current catalog: ".myhtml(getcwd())."<hr>";
   
   if (!empty($_REQUEST['CATALOG'])) {
      echo "<pre>";
      $src=trim($_REQUEST['CATALOG']);
      $d = @dir($src);
      if ($d===false) {
         echo "ERROR opening ".myhtml($src);
      }
      else {
         while (false !== ($entry = $d->read())) {
            echo $entry."\n";
         }
         $d->close();
      }
      echo "</pre><hr>";
   }
?>   
<form>
   <input type=hidden name="FUNCTION" value="515">
   <input type=text name="CATALOG" size=100>
   <input type=submit value="Query">
</form>
<?php
   GoBack();
}
//--------------------------------------
function edit_parameters()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL!=0) { // precaution 
      return home_page();
   }
   
   echo "<h1>Παράμετροι συστήματος</h1>";
   
   $query="SELECT PVALUE FROM reselprefex 
      WHERE AGENTID=0 AND RESELID=0 AND PGROUP='Esend.params' AND PNAME='XML_LOCATION' ";
   if (($rs=$db->Execute($query))===false) {
      uerror($db->ErrorMsg());
      return home_page();
   }
   $row=$rs->FetchRow();
   $rs->Close();
?>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="514">
<table>
<tr>
   <td>XML files path</td>
   <td><input type=text name="XML_LOCATION" value="<?php echo myhtml(@$row[0]); ?>"></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Ενημέρωση">
      <button type=button class=bigButton onclick="goTo(6)">Ακυρο</button>
   </td>
</tr>
</table>
</form>   
<?php
}
//--------------------------------------
function list_users()
{
   global $x2;
   $db=&$x2->db;
   
   if (empty($x2->USERID) || $x2->ULEVEL==2) { // precaution 
      return home_page();
   }
   
   $ar1=array('F_EMAIL', 'F_COMPANY', 'F_VATNO');
   foreach ($ar1 as $f1) {
      if (isset($_REQUEST[$f1])) {
         $_SESSION[$f1]=$_REQUEST[$f1];
      }
   }
   
   echo "<h1>Χρήστες</h1>";
?>
<script>
var id, ulevel;
var thisID=<?php echo $x2->USERID; ?>;
$(function(){
   $('#popmenuF').dialog({autoOpen:false, modal:true, width:360});
} );
function oclick(stage, row, col)
{
	id = this.cells(row, 0).getValue();
   var ar1 = this.cells(row, 2).getValue().split(' ');
   ulevel=ar1[0];
<?php   
   if ($x2->ULEVEL==0) { // super user
      echo "if (id!=thisID && ulevel!=2) {
         show_popup(document.getElementById('popmenu'));
         }\n";
   }
?>
   if (ulevel==2) {
      show_popup(document.getElementById('popmenu2'));
   }
}
function winRet(x)
{
	switch (x)
	{
   case 0: 
   case 1:
      var ids=x+';'+id; 
      goRecord(501,ids);
      break;
   case 9:
   case 16:
      goRecord(x,id);
      break;
   case 502:
      goRecord(x,id);
      break;
   }
}
function onFilter()
{            
   $('#popmenuF').dialog('open');
}
</script>
<?php
   $pg=getPage();
	$pgsz=getPageSize('grid3');
   
   $gr1=new cXRID('grid3');
   
   array_push( $gr1->cols,
      array( 'ID', 60),
		array( 'EMAIL', 100),
      array( 'LEVEL', 80), 
      array( 'ACTIVE', 40),  
      array( 'COMPANY', 100),
      array( 'VAT no', 100),
      array( 'FULLNAME', 100),
      array( 'ADDRESS1', 100),
      array( 'ADDRESS2', 100),
      array( 'CITY', 100),
      array( 'STATE', 100),
      array( 'ZIP', 50),
      array( 'COUNTRY', 50),
      array( 'PHONES', 50),
      array( 'MYFUSERID', 100),
      array( 'LASTUPDATE', 100) 
   );

   $where=false;
   $data=array();
   $query="SELECT * FROM ese_user ";
   if (!empty($_SESSION['F_EMAIL'])) {
      $operat = (strpos($_SESSION['F_EMAIL'], '%')===false?'=':'LIKE');
      $query .= " WHERE EMAIL $operat :F_EMAIL ";
      $data['F_EMAIL'] = $_SESSION['F_EMAIL']; 
      $where=true; 
   }
   if (!empty($_SESSION['F_VATNO'])) {
      $operat = (strpos($_SESSION['F_VATNO'], '%')===false?'=':'LIKE');
      if ($where) {
         $query .= " AND ";
      }
      else {
         $query .= " WHERE ";
      }
      $query .= " VATNO $operat :F_VATNO ";
      $data['F_VATNO'] = $_SESSION['F_VATNO']; 
      $where=true;       
   }
   if (!empty($_SESSION['F_COMPANY'])) {
      $operat = (strpos($_SESSION['F_COMPANY'], '%')===false?'=':'LIKE');
      if ($where) {
         $query .= " AND ";
      }
      else {
         $query .= " WHERE ";
      }
      $query .= " COMPANY $operat :F_COMPANY ";
      $data['F_COMPANY'] = $_SESSION['F_COMPANY']; 
      $where=true;       
   }
   $query .= "ORDER BY EMAIL";
   if (($rs=$db->PageExecute($query,$pgsz,$pg,$data))===false) {
      uerror($db->ErrorMsg());
      return;
   }
   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[] = myhtml($o1->USERID);
      $row1[] = myhtml($o1->EMAIL);
      
      $s1 = $o1->ULEVEL; // 0,1,2 = super user, admin, developer
      switch ($o1->ULEVEL)
      {
      case 0: 
         $s1 .= " Super user";
         break;
      case 1: 
         $s1 .= " Administrator";
         break;
      case 2: 
         $s1 .= " Επιχείρηση";
         break;
      }
      $row1[] = myhtml($s1);
       
      $row1[] = myhtml($o1->ACTIVE);  
      $row1[] = myhtml($o1->COMPANY);
      $row1[] = myhtml($o1->VATNO);
      $row1[] = myhtml($o1->FULLNAME);
      $row1[] = myhtml($o1->ADDRESS1);
      $row1[] = myhtml($o1->ADDRESS2);
      $row1[] = myhtml($o1->CITY);
      $row1[] = myhtml($o1->STATE);
      $row1[] = myhtml($o1->ZIP);
      $row1[] = myhtml($o1->COUNTRY);
      $row1[] = myhtml($o1->PHONES);
      $row1[] = myhtml($o1->MYFUSERID);
      $row1[] = GrDateTime($o1->LASTUPDATE);
      
      $gr1->rows[] = $row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,500);
   echo RefreshStr(500);
   if ($x2->ULEVEL==0) { // superuser
      echo "<button type=button onclick=\"goTo(3)\">Νέα εγγραφή</button>\n";
   }
	echo "| <b><a href=\"javascript:onFilter()\"> <input type=checkbox ";
   if (!empty($where)) { echo "checked"; }
   echo " id=filter disabled>Φίλτρο</a></b> | <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b>
		</div>";
?>   
<div id=popmenuF title="Καθορισμός φίλτρου">
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm2">
<input type=hidden name="FUNCTION" value="500">
<table>
<tr>
   <td>Taxis user name</td>      
   <td><input type=text name="F_EMAIL" value="<?php echo myhtml(@$_SESSION['F_EMAIL']); ?>"></td>
</tr>
<tr>
   <td>Εταιρία</td>   
   <td><input type=text name="F_COMPANY" value="<?php echo myhtml(@$_SESSION['F_COMPANY']); ?>"></td>
</tr>
<tr>
   <td>ΑΦΜ</td>   
   <td><input type=text name="F_VATNO" value="<?php echo myhtml(@$_SESSION['F_VATNO']); ?>" maxlength=11></td>
</tr>
<tr>
   <td></td>
   <td style="color:#909090">Μπορείτε να χρησιμοποιήσετε τον χαρακτήρα '%' στην θέση ενός η περισσότερων χαρακτήρων.</td>
</tr>
<tr>
   <td></td>
   <td><input type=submit class=bigButton value="Εφαρμογή"></td>
</tr>
</table>
</form>
</div>
<?php      
      
   $selx=array(
      array(0, '../img/go_up.png', 'Προβιβασμός σε Superuser level'),
		array(1, '../img/go_down.png', 'Υποβιβασμός σε Admin level' ),
      array(9, '../img/checkedbox16x16.png', 'Activate/Deactivate'),
      array(16, '../img/button_edit.png', 'Διόρθωση στοιχείων')
      );
   draw_popup($selx);
   
   $selx2=array(
      array(502, '../img/preview16x16.png', 'Λίστα ΦΗΜ')
      );
   draw_popup($selx2, false, 'popmenu2');
}
//--------------------------------------
function request_sha1()
{
?>
<h1>Υπολογισμός SHA1 από άλλες υπογραφές SHA1</h1>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="161">
<table>
<tr>
   <td>Αλλες υπογραφές SHA1 (μία ανά γραμμή)</td>
   <td><textarea name="OTHERSHA1" style="width:400px; height:200px" wrap=hard></textarea></td>
</tr>
<tr>
   <td></td>
   <td>
      <input type=submit class=bigButton value="Υπολογισμός">
      <input type=button class=bigButton value="Ακυρο" onclick="goTo(6)">
   </td>
</tr>
</table>
</form>
<?php   
}
//--------------------------------------
function adm_init_myf()
{
?>
   <h1>Καταστάσεις ΜΥΦ</h1>
   <form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
   <input type=hidden name="FUNCTION" value="180">
   <table>
   <tr>
      <td>Υπόχρεος ΑΦΜ</td>
      <td><input type=text name="VATNO" maxlength=9>
         <b><a href="javascript:goTo(181)">Κατάλογος</a> |
         <a href="javascript:goTo(178)">Αναμονές</a></b>
         </td>
   </tr>
   <tr>
      <td></td>
      <td>
         <input type=submit class=bigButton value="Συνέχεια">
         <input type=button class=bigButton value="Ακυρο" onclick="goTo(6)">
      </td>
   </tr>
   </table>
   </form>
<?php
}
//--------------------------------------
function check_progress()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid = $_REQUEST['RECORDID'];
   $userafm = $_SESSION['USERAFM'];
   
   // VATNO not required, add for security reasons
   $query="SELECT MYFID, PROCSTATUS FROM ese_myfpkg WHERE PKGID=:PKGID AND VATNO=:VATNO";
   $data=array('PKGID'=>$pkgid, 'VATNO'=>$userafm);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return;
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1===false) {
      uerror("Δεν βρέθηκε η εγγραφή για το πακέτο $pkgid!");
      return;  
   }
   else if ($o1->MYFID<=0) {
      uerror("Το πακέτο $pkgid δεν έχει λάβει Id υποβολής!");
      return;
   }
   else if ($o1->PROCSTATUS!=='PROCESSING') {
      uerror("Tο πακέτο $pkgid δεν είναι σε κατάσταση PROCESSING!");
      return;
   }
   
   $brk=false;
   do {
      $ret=false;
      $query="SELECT MYFUSERID, MYFPASSWD FROM ese_user WHERE VATNO=:VATNO";
      $data=array('VATNO'=>$userafm);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror($db->ErrorMsg());
         break;
      }
      while ($row=$rs->FetchRow()) {
         if ($ret!==false) {
            uerror("Ο ΑΦΜ $userafm έχει πολλαπλές εγγραφές!");
            $brk=true;
            break;
         }
         else {
            $ret=array($row[0], $row[1]);
         }
      }
      $rs->Close();
      if ($brk)
         break;
   
      if ($ret===false || empty($ret[0]) || empty($ret[1])) {
         uerror("Δεν βρέθηκαν εγγραφές κωδικών ΜΥΦ για το ΑΜΦ $userafm");
         break;
      }
   
      $authstr = "Authorization: Basic ".base64_encode(implode(':', $ret));
      
      $url = "https://www1.gsis.gr/myf/oltp/api/post/status/".$o1->MYFID;
      
      if (($ch = curl_init())===false) {
         echo "curl_init() error\n";
         break;
      }
      
      if (!curl_setopt_array($ch, array(
         CURLOPT_URL => $url,
         //CURLOPT_FOLLOWLOCATION => true,
         CURLOPT_HTTPHEADER => array($authstr),
         CURLOPT_RETURNTRANSFER => true,
         CURLOPT_POST => false,
         CURLOPT_SSL_VERIFYPEER => false
      ))) 
      {
         echo "curl_setopt() error\n";
         curl_close($ch);
         break;
      }
   
      if (($rets=curl_exec($ch))===false) {
         uerror("curl_exec() error: ".curl_error($ch) );
         curl_close($ch);
         break;
      }
      
      curl_close($ch);
      
      umessage($rets);
      process_myf_ret($pkgid, $o1->MYFID, $rets);
      
   } while (false);
}
//--------------------------------------
function mark_as_unsent()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid=$_REQUEST['RECORDID'];

   // VATNO not required, add for security reasons
   $query="SELECT COUNT(*) FROM ese_myfpkg WHERE PKGID=:PKGID AND VATNO=:VATNO";
   $data=array('PKGID'=>$pkgid, 'VATNO'=>$_SESSION['USERAFM']);
   $query2=embed_vars($query,$data);
   if (($rs=$db->Execute($query2))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   if ($row[0]==0)
      return;

   $db->StartTrans();
         
   do {
      $query="UPDATE ese_myfpkg SET ASKTOSEND = NULL, MYFID = NULL, PROCSTATUS = NULL 
         WHERE PKGID=$pkgid";
      if (!$db->Execute($query)) {
         uerror( __LINE__.$db->ErrorMsg() );
         break;
      }
      
      $query="DELETE FROM ese_myfxml WHERE PKGID=$pkgid";
      if (!$db->Execute($query)) {
         uerror( __LINE__.$db->ErrorMsg() );
         break;
      }
      
      // do not delete errors or detail records
      
   } while (false);
   
   $db->CompleteTrans();
}
//--------------------------------------
function change_pkg_method()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid=$_REQUEST['RECORDID'];
   
   $query="SELECT COUNT(*) FROM ese_myfpkg WHERE PKGID=:PKGID AND VATNO=:VATNO 
      AND ASKTOSEND IS NULL AND MYFID IS NULL AND PROCSTATUS IS NULL";
   $data=array('PKGID'=>$pkgid, 'VATNO'=>$_SESSION['USERAFM']);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror( __LINE__.' '.$db->ErrorMsg() );
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   
   if (@$row[0]==0) {
      uerror("Δεν υπάρχουν εγγραφές (μη αποσταλείσες) για αλλαγή!");
      return;
   }
   
   $query="UPDATE ese_myfpkg SET DOREPLACE=1-NVL(DOREPLACE,0) WHERE PKGID=:PKGID AND VATNO=:VATNO
      AND ASKTOSEND IS NULL AND MYFID IS NULL AND PROCSTATUS IS NULL";
   $data=array('PKGID'=>$pkgid, 'VATNO'=>$_SESSION['USERAFM']);
   if (!$db->Execute($query,$data)) {
      uerror( __LINE__.$db->ErrorMsg() );
   }
}
//--------------------------------------
function resubmit_package()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid=$_REQUEST['RECORDID'];
   
   // VATNO not required, add for security reasons
   $query="SELECT PROCSTATUS FROM ese_myfpkg WHERE PKGID=:PKGID AND VATNO=:VATNO";
   $data=array('PKGID'=>$pkgid, 'VATNO'=>$_SESSION['USERAFM']);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return;
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   
   if ($o1===false) {
      uerror("Δεν βρέθηκε το πακέτο $pkgid");
      return;
   }
   else if ($o1->PROCSTATUS==='OK' || $o1->PROCSTATUS==='PROCESSING') {
      uerror("Το πακέτο $pkgid βρίσκεται σε φάση επεξεργασίας ή ολοκληρώθηκε!");
      return;
   }
   
   $db->StartTrans();
   
   do {
      $query="UPDATE ese_myfpkg SET MYFID = NULL, ASKTOSEND=:ASKTOSEND, PROCSTATUS = NULL 
         WHERE PKGID=$pkgid";
      $data=array('ASKTOSEND'=>date('Ymdhis'));
      if (!$db->Execute($query,$data)) {
         uerror( __LINE__.$db->ErrorMsg() );
         break;
      }
   
      $query="DELETE FROM ese_myferr WHERE PKGID=$pkgid";
      if (!$db->Execute($query)) {
         uerror( __LINE__.$db->ErrorMsg() );
         break;
      }
      
      $query="DELETE FROM ese_myfxml WHERE PKGID=$pkgid";
      if (!$db->Execute($query)) {
         uerror( __LINE__.$db->ErrorMsg() );
         break;
      }
      
   } while (false);
   
   $db->CompleteTrans(); 
}
//--------------------------------------
function download_xml()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid=$_REQUEST['RECORDID'];
}
//--------------------------------------
function check_xml_errors()
{
   global $x2;
   $db=&$x2->db;
   
   $pkgid=$_REQUEST['RECORDID'];
   
   do {
      $query="SELECT XMLFILE, YEARMON FROM ese_myfpkg T1 
         INNER JOIN ese_myfxml T2 ON (T2.PKGID=T1.PKGID) 
         WHERE T1.PKGID=$pkgid AND T1.VATNO=:VATNO";
      $data=array('VATNO'=>$_SESSION['USERAFM']);
      $query2=embed_vars($query,$data);
      if (($rs=$db->Execute($query2))===false) {
         uerror(__LINE__.$db->ErrorMsg());
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) {
         uerror("Δεν υπάρχει XML αρχείο για την εγγραφή!");
         break;
      }
      
      $ymon=$row[1];
      echo "<h1>Ελεγχος λαθών XML - ΑΦΜ ".$_SESSION['USERAFM']." / ΜΥΦ ".substr($ymon,4,2)."-".
         substr($ymon,0,4)." / Πακέτο $pkgid</h1>";
         
      if (empty($x2->xmlpath)) {
         uerror("ERROR xmlpath is empty!");
         break;
      }
      
      // $xmlpath ends with DIRECTORY_SEPARATOR;
      $xmlfile = $x2->xmlpath.$_SESSION['USERAFM'].$ymon.$pkgid.".xml";
      if (($fp=@fopen($xmlfile, "wb"))===false) {
         uerror("Απέτυχε το άνοιγμα του αρχείου $xmlfile για γράψιμο!");
         break;
      }
      fwrite($fp, $row[0]);
      fclose($fp);
      
      // Enable user error handling
      libxml_use_internal_errors(true);
      
      $dd= new DOMDocument();
      if (!$dd->load($xmlfile)) {
         uerror("Failed to load XML $xmlfile");
         return false;
      }
      if (!$dd->schemaValidate("gsis_packages_schema.xsd")) {
         echo "<b>Λάθη</b>
            <div style=\"border:1px solid gray; background-color:#FFFFCC; margin:10px;\">";
         libxml_display_errors();
         echo "</div>
            <b>Περιεχόμενο</b>
            <div id=xmlc style=\"border:1px solid gray; background-color:#FFFFCC; margin:10px;\"></div>
            <script> 
            $('#xmlc').load('esend2.php?FUNCTION=5&XMLFILE=".urlencode($xmlfile)."');
            </script>";
      }
      else {
         umessage("All checks OK for XML $xmlfile");
         unlink($xmlfile); 
      }
      
   } while (false);
      
   echo "<p><a href=\"javascript:goTo(180)\">Πακέτα</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a></p>";
}
//--------------------------------------
function view_myf_wait()
{
   global $x2;
   $db=&$x2->db;

   if ($x2->ULEVEL==2) { // end user
      uerror("Authentication error!");
      return GoBack();
   }
   
   echo "<h1>ΜΥΦ σε αναμονή υποβολής</h1>";
   
   $pg=getPage();
	$pgsz=getPageSize('grid16');
   $gr1=new cXRID('grid16');
   
   $query="SELECT * FROM ese_myfpkg 
      WHERE ASKTOSEND IS NOT NULL AND MYFID IS NULL
      ORDER BY VATNO, YEARMON, PKGID";
   if (($rs=$db->PageExecute($query,$pgsz,$pg))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return GoBack();
   }  
   
   array_push($gr1->cols,
      array('Πακέτο', 80),
      array('ΑΦΜ', 80),
      array('Μήνας', 80),
      array('Εντολή υποβολής', 120),
      array('Εναρξη υποβολής', 120),
      array('Κατάσταση', 120),
      array('Τελ.ενημέρωση', 120)
      );
   
   while ($o1=$rs->FetchNextObject()) {
      $row1=array(
         $o1->PKGID,      
         myhtml($o1->VATNO),
         $o1->YEARMON, 
         GrDateTime($o1->ASKTOSEND), // YYYYMMDDHHMMSS
         GrDateTime($o1->STARTPROC), // YYYYMMDDHHMMSS
         myhtml($o1->PROCSTATUS), 
         GrDateTime($o1->LASTUPDATE)
      );
      
      $gr1->rows[]=$row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   if (empty($gr1->rows)) {
      umessage("Δεν υπάρχουν αναμονές!");
   }
   else {
      $gr1->play();
   }
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,178);
   echo RefreshStr(178)." <b>
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";
}
//--------------------------------------
function view_myf_list()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL!=2 && isset($_REQUEST['VATNO'])) {
      $query="SELECT COUNT(*) FROM ese_user WHERE VATNO=:VATNO";
      $data=array('VATNO'=>$_REQUEST['VATNO']);
      $query2=embed_vars($query,$data);
      if (($rs=$db->Execute($query2))===false) {
         uerror( __LINE__.$db->ErrorMsg() );
         return GoBack();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row[0]==0) {
         uerror("Προσοχή! Δεν υπάρχει χρήστης με ΑΦΜ ".myhtml($_REQUEST['VATNO']) );
         // but continue
      }
      else if ($row[0]>1) {
         uerror("Προσοχή! Υπάρχουν διπλοεγγραφές για τον ΑΦΜ ".myhtml($_REQUEST['VATNO']) );
         return GoBack();
      } 
      
      $_SESSION['USERAFM'] = $_REQUEST['VATNO'];
   }
   // else if ($x2->ULEVEL==2) $_SESSION['USERAFM'] is already defined
   
   echo "<h1>Καταστάσεις ΜΥΦ (υπόχρεος ΑΦΜ ".myhtml($_SESSION['USERAFM']).") - Πακέτα</h1>";
?>   
<script>
var ymon, pkgid;

$(function() {
   $('#showErrors').dialog({autoOpen:false, modal:true, resizable:false, width:550, height:420, buttons: {
        Ok: function() {
          $( this ).dialog( "close" );
        }
      } });
});

function oclick(stage, row, col)
{
   ymon = this.cells(row,0).getValue().split('-').join('');
   pkgid = this.cells(row,1).getValue();
   show_popup();      
}
function winRet(x)
{
	switch (x)
	{
   case 182:
      goRecord(182, ymon );
      break;
   case 189: // cancel sending (deprecated?)
   case 190: // check progress
   case 192: // check XML errors
   case 195: // package records
   case 196: // change method
      goRecord(x, pkgid );
      break;
   case 197: // download XML
      StartDownload();
      break;
   case 191: // resubmit
      if (window.confirm("Υπενθύμιση.\n"+
         "Η υποβολή για [Εξοδα χωρίς τιμολόγιο] γίνεται μια φορά τον μήνα μόνο!\n"+
         "Συνέχεια;")) 
      {
         goRecord(x, pkgid );
      }
      break;
   case 4:
      show_errors();
      break;
   }
   hide_popup();
}
function StartDownload()
{
   var url='esend_exp.php?FUNCTION=1&PKGID='+pkgid; 
   if ($('#downl').length==0) {
      $('body').append('<iframe src="about:blank" id=downl style="position:absolute; top:-10px; height:1px;"></iframe>');
   }
   document.getElementById('downl').src=url;
}
function show_errors()
{                                           
   $('#showErrors').dialog('option', 'title', 'Περιγραφή λαθών υποβολής, πακέτο #'+pkgid); 
   $('#showErrors').html('');
   $('#showErrors').load('esend2.php', {FUNCTION:4, PKGID:pkgid} ).dialog('open');
}   
</script>
<div id=showErrors></div>
<?php                         
   $pg=getPage();
	$pgsz=getPageSize('grid12');
   
   $query="SELECT T1.ASKTOSEND, T1.LASTUPDATE, T1.MYFID, T1.PKGID, T1.PROCSTATUS, T1.STARTPROC, 
         T1.VATNO, T1.YEARMON, T1.DOREPLACE,  COUNT(T2.ERRNO) CNT FROM ese_myfpkg T1 
      LEFT JOIN  ese_myferr T2 ON (T2.PKGID=T1.PKGID)
      WHERE T1.VATNO=:VATNO
      GROUP BY (T1.ASKTOSEND, T1.LASTUPDATE, T1.MYFID, T1.PKGID, T1.PROCSTATUS, T1.STARTPROC, 
         T1.VATNO, T1.YEARMON, T1.DOREPLACE)
      ORDER BY T1.YEARMON, T1.PKGID";
   $data=array('VATNO'=>$_SESSION['USERAFM']);
   if (($rs=$db->PageExecute($query,$pgsz,$pg,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return GoBack();
   }  
   
   $gr1=new cXRID('grid12');
   
   array_push($gr1->cols,
      array('Μήνας', 100),
      array('Πακέτο', 80),
      array('Εντολή υποβολής', 80),
      array('Μέθοδος', 80),
      array('Εναρξη υποβολής', 80),
      array('Id υποβολής', 80),
      array('Κατάσταση', 100),
      array('Λάθη', 80),
      array('Τελ.ενημέρωση', 200)
      ); 
   
   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[]=sprintf("%s-%s", substr($o1->YEARMON,0,4), substr($o1->YEARMON,4,2) );
      $row1[]=$o1->PKGID;
      $row1[]=GrDateTime($o1->ASKTOSEND);
      $row1[]=($o1->DOREPLACE==1?'replace':'incremental');
      $row1[]=GrDateTime($o1->STARTPROC);
      $row1[]=$o1->MYFID;
      $row1[]=myhtml($o1->PROCSTATUS);
      $row1[]=$o1->CNT;
      $row1[]=GrDateTime($o1->LASTUPDATE);
      
      $gr1->rows[]=$row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,180);
   echo RefreshStr(180);
   if ($x2->ULEVEL!=2) {
      echo "<button type=button onclick=\"goTo(181)\">Κατάλογος</button>";
   }
   echo " <b>
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";
      
   $selx=array(
      array(195, '../img/open_folder.gif', 'Εγγραφές πακέτου'),
      array(182, '../img/diary.png', 'Σύνολα μήνα')
      );
   if ($x2->ULEVEL==0) { // super user
      array_push($selx, array(189, '../img/cancel_box.png', 'Ακύρωση εντολής αποστολής') );
   }
   array_push($selx,   
      array(190, '../img/comeAgo.png', 'Ελεγχος προόδου'),
      array(4, '../img/attention.png', 'Μηνύματα λάθους')
      );
   if (class_exists("DOMDocument")) {
      array_push($selx, array(192, '../img/check_err.png', 'Ελεγχος λαθών XML') );
   }
   array_push($selx, array(197, '../img/download.png', 'Λήψη XML') );
   if ($x2->ULEVEL!=3) { 
      array_push($selx, 
         '<hr>',
         array(196, '../img/rename.png', 'Αλλαγή μεθόδου'),
         array(191, '../img/reset.png', '(Επαν)Υποβολή')
      );
   }
   draw_popup($selx);
}
//--------------------------------------
function reset_nonoblig()
{
   global $x2;
   $db=&$x2->db;
   
   $afm=$_REQUEST['RECORDID'];
   unset($_REQUEST['RECORDID']);
   
   $query="SELECT COUNT(*) FROM ese_nonoblig WHERE VATNO=:VATNO AND AFM=:AFM";
   $data=array('VATNO'=>$_SESSION['USERAFM'], 'AFM'=>$afm);
   if (($rs=$db->Execute($query, $data))===false) {
      uerror( __LINE__.'(select)'.$db->ErrorMsg() );
      return;
   }
   $row=$rs->FetchRow();
   $rs->Close();
   
   $db->StartTrans();
   
   do {
      // flip/flop
      if ($row[0]>0) { // already exists: delete it
         $query="DELETE FROM ese_nonoblig WHERE VATNO=:VATNO AND AFM=:AFM";
         if (!$db->Execute($query, $data)) {
            uerror( __LINE__.'(delete)'.$db->ErrorMsg() );
            break;
         }
         $nobl=0;
      }
      else { // does not exist: create it
         if (!empty($afm)) {
            $query="INSERT INTO ese_nonoblig (VATNO, AFM) VALUES(:VATNO, :AFM)";
            if (!$db->Execute($query, $data)) {
               uerror( __LINE__.'(insert)'.$db->ErrorMsg() );
               break;
            }
         }
         $nobl=1;
      }
      
      // apply new value
      $query="UPDATE ese_myfrec SET NONOBL=$nobl 
         WHERE PKGID IN (
            SELECT PKGID FROM ese_myfpkg WHERE VATNO=:VATNO AND MYFID IS NULL
         ) AND DATATYPE IN (2,3,5) AND AFM=:AFM";
      if (!$db->Execute($query, $data)) 
         uerror( __LINE__.'(update)'.$db->ErrorMsg() );
      
   } while (false);
   
   $db->CompleteTrans();
}
//--------------------------------------
function update_myf_mon()
{
   global $x2;
   $db=&$x2->db;

   $myrecid=(int)$_REQUEST['MYRECID'];
   
   $dx=explode('-', $_REQUEST['DATELASTDOC']);
   while (count($dx)<3) { $dx[]=0; }
   // normalize:
   if (($t1=mktime(0,0,0, (int)$dx[1], (int)$dx[0], (int)$dx[2]))===false) {
      uerror("Λάθος ημερομηνία τελευταίου παραστατικού!");
      return;
   }
   
   if ($myrecid==0) { // does not exist: insert new record
      if ($_REQUEST['PKGID']==0) { // new package
         $query="SELECT MAX(PKGID) FROM ese_myfpkg";
         if (($rs=$db->Execute($query))===false) {
            uerror(__LINE__.$db->ErrorMsg());
            return;
         }
         $row=$rs->FetchRow();
         $rs->Close();
         $pkgid = $row[0]+1;
            
         $db->StartTrans();
      
         do {
            $query="INSERT INTO ese_myfpkg (PKGID, VATNO, YEARMON) VALUES(:PKGID, :VATNO, :YEARMON)";
            $data=array('PKGID'=>$pkgid, 'VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>(int)$_SESSION['YEARMON']);
            if (!$db->Execute($query,$data)) {
               uerror(__LINE__.$db->ErrorMsg());
               break;
            }
         
            $query="INSERT INTO ese_myfrec (PKGID, DATATYPE, AFM, AMOUNT, TAX, INVOICES, DATELASTDOC, USERINPUT) 
               VALUES(:PKGID, :DATATYPE, :AFM, :AMOUNT, :TAX, :INVOICES, :DATELASTDOC, 1)";
            $data=array('PKGID'=>$pkgid, 'DATATYPE'=>(int)$_REQUEST['DATATYPE'], 'AFM'=>trim($_REQUEST['AFM']), 
               'AMOUNT'=>toFloat($_REQUEST['AMOUNT']), 'TAX'=>toFloat($_REQUEST['TAX']), 
               'INVOICES'=>(int)$_REQUEST['INVOICES'], 'DATELASTDOC'=>date('Ymd', $t1) );
            if (!$db->Execute($query,$data)) {
               uerror(__LINE__.$db->ErrorMsg());
               break;
            }
         } while (false);
         
         $db->CompleteTrans();
      }
      else { // new record for existing package
         $query="SELECT VATNO, ASKTOSEND, PROCSTATUS FROM ese_myfpkg WHERE PKGID=:PKGID";
         $data=array( 'PKGID'=>(int)$_REQUEST['PKGID'] );
         if (($rs=$db->Execute($query,$data))===false) {
            uerror(__LINE__.$db->ErrorMsg());
            return;
         }
         $o1=$rs->FetchNextObject();
         $rs->Close();
         if ($o1===false) {
            uerror("Το πακέτο δεν υπάρχει: ".$_REQUEST['PKGID']);
            return;
         }
         else if ($o1->VATNO!==$_SESSION['USERAFM']) {
            uerror("Το πακέτο δεν ανήκει στον ΑΦΜ σας: ".$_REQUEST['PKGID']);
            return;
         }
         else if (!empty($o1->ASKTOSEND) && ($o1->PROCSTATUS==='OK' || $o1->PROCSTATUS==='PROCESSING')) {
            uerror("Το πακέτο είναι σε φάση επεξεργασίας ή ολοκληρώθηκε: ".$_REQUEST['PKGID']);
            return;
         }  

         $query="SELECT COUNT(*) FROM ese_myfrec WHERE PKGID=:PKGID AND DATATYPE=:DATATYPE AND AFM=:AFM";
         $data=array( 'PKGID'=>(int)$_REQUEST['PKGID'], 'DATATYPE'=>(int)$_REQUEST['DATATYPE'], 'AFM'=>$_REQUEST['AFM'] );
         if (($rs=$db->Execute($query,$data))===false) {
            uerror(__LINE__.$db->ErrorMsg());
            return;
         }
         $row=$rs->FetchRow();
         $rs->Close();
         if ($row[0]>0) {
            uerror("Ηδη υπάρχει η εγγραφή!");
            return;
         }
         
         $query="INSERT INTO ese_myfrec (PKGID, DATATYPE, AFM, AMOUNT, TAX, INVOICES, DATELASTDOC, USERINPUT) 
            VALUES(:PKGID, :DATATYPE, :AFM, :AMOUNT, :TAX, :INVOICES, :DATELASTDOC, 1)";
         $data=array( 'PKGID'=>(int)$_REQUEST['PKGID'], 'DATATYPE'=>(int)$_REQUEST['DATATYPE'], 'AFM'=>trim($_REQUEST['AFM']), 
               'AMOUNT'=>toFloat($_REQUEST['AMOUNT']), 'TAX'=>toFloat($_REQUEST['TAX']), 
               'INVOICES'=>(int)$_REQUEST['INVOICES'], 'DATELASTDOC'=>date('Ymd', $t1) );
         if (!$db->Execute($query, $data)) {
            uerror(__LINE__.$db->ErrorMsg());
            return;
         }
      }
   }
   else { // update existing record
      $query="SELECT T2.PKGID, T2.ASKTOSEND, T2.PROCSTATUS FROM ese_myfrec T1
         LEFT JOIN ese_myfpkg T2 ON (T2.PKGID=T1.PKGID) WHERE T1.MYRECID=:MYRECID";
      $data=array( 'MYRECID'=>$myrecid );
      if (($rs=$db->Execute($query, $data))===false) {
         uerror($db->ErrorMsg());
         return;
      }
      $o1=$rs->FetchNextObject();
      $rs->Close();
      if ($o1===false) {
         uerror("Η εγγραφή δεν υπάρχει: $myrecid");
         return;
      }
      else if (!empty($o1->ASKTOSEND) && ($o1->PROCSTATUS==='OK' || $o1->PROCSTATUS==='PROCESSING')) {
         uerror("Το πακέτο είναι σε φάση επεξεργασίας ή ολοκληρώθηκε: ".$o1->PKGID);
         return;
      }         
         
      $query="UPDATE ese_myfrec SET AMOUNT=:AMOUNT, TAX=:TAX, INVOICES=:INVOICES, 
         DATELASTDOC=:DATELASTDOC, USERINPUT=1 WHERE MYRECID=:MYRECID";
      $data=array('AMOUNT'=>toFloat($_REQUEST['AMOUNT']), 'TAX'=>toFloat($_REQUEST['TAX']), 
         'INVOICES'=>(int)$_REQUEST['INVOICES'], 'DATELASTDOC'=>date('Ymd', $t1), 'MYRECID'=>$myrecid );
      if (!$db->Execute($query, $data)) {
         uerror($db->ErrorMsg());
      }
   }
}
//--------------------------------------
function view_myf_mon()
{
   global $x2;
   $db=&$x2->db;
   
   class cMYFTOTAL {
      var $CNT2;
      var $TAMT;
      var $TTAX;
      
      function __construct()
      {
         $this->CNT2 = 0;
         $this->TAMT = 0;
         $this->TTAX = 0;
      }
      
      function add_rec($o1)
      {
         $this->CNT2 += $o1->CNT2;
         $this->TAMT += $o1->TAMT;
         $this->TTAX += $o1->TTAX;
      }
   }
   
   if (isset($_REQUEST['RECORDID'])) {
      $_SESSION['YEARMON'] = $_REQUEST['RECORDID']; // yyyymm
   }
   
   echo "<h1>ΑΦΜ ".$_SESSION['USERAFM']." / ΜΥΦ ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4)." (Σύνολα)</h1>";
      
   $gr1=new cXRID('grid15');
   array_push( $gr1->cols,
      array('Τυπος', 150),
      array('Πακέτα πλήθος', 80, 'right'),
      array('Εγγραφές', 80, 'right'),
      array('Καθαρό ποσό', 100, 'right'),
      array('Ποσό ΦΠΑ', 100, 'right'),
      array('Παραστατικά', 80, 'right')
      );      
   
   $query="SELECT DATATYPE, COUNT(DISTINCT T1.PKGID) CNT, COUNT(T2.MYRECID) CNT2, SUM(AMOUNT) TAMT, SUM(TAX) TTAX, SUM(INVOICES) TINV FROM ese_myfpkg T1
      LEFT JOIN ese_myfrec T2 ON (T2.PKGID=T1.PKGID) 
      WHERE T1.VATNO=:VATNO AND T1.YEARMON=:YEARMON AND T2.PKGID IS NOT NULL
      GROUP BY DATATYPE
      ORDER BY DATATYPE";
   $data=array('VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return GoBack(); 
   }
   $mT = new cMYFTOTAL;
   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[]=myhtml($x2->DataTypeStr($o1->DATATYPE));
      $row1[]=$o1->CNT;
      $row1[]=$o1->CNT2;
      $row1[]=GrNumber($o1->TAMT);
      $row1[]=GrNumber($o1->TTAX);
      $row1[]=$o1->TINV;
      
      $gr1->rows[]=$row1;
      
      $mT->add_rec($o1);
   }
   $rs->Close();
   
   $row1=array(
      "<b>Σύνολο</b>",
      '',
      $mT->CNT2,
      GrNumber($mT->TAMT),
      GrNumber($mT->TTAX),
      $mT->TTAX>0?'(Χρεωστική)':'(Μηδενική/ Πιστωτική)'
      );
   $gr1->rows[]=$row1;
   
   if (empty($gr1->rows)) {
      umessage("Δεν υπάρχουν εγγραφές!");
   }
   else {
      $gr1->click='oclick';
      $gr1->play();
   }
?>   
<script>
function oclick()
{
   goTo(188);
}
function onSubmitMyf()
{
   if (window.confirm("Υπενθύμιση.\n"+
         "Η υποβολή για [Εξοδα χωρίς τιμολόγιο] γίνεται μια φορά τον μήνα μόνο!\n"+
         "Συνέχεια;")) 
   {
      goTo(185);
   }
}   
</script>
<div id=tbar2>
      <button type=button onclick="goTo(180)">Πακέτα</button>
      <button type=button onclick="goTo(188)">Ανάλυση</button>
<?php
   if (!empty($gr1->rows)) {
      echo "<button type=button ".($x2->ULEVEL==3?"disabled":"onclick=\"onSubmitMyf()\"").">Υποβολή</button>";
   }
?>   
      <a href="javascript:goTo(6)">Επιστροφή</a>
</div>
<?php   
}
//--------------------------------------
function zoom_myf_zoom()
{
   global $x2;
   $db=&$x2->db;
   
   if (!empty($_REQUEST['RECORDID'])) {
      $_SESSION['MYRECID']=$_REQUEST['RECORDID'];
   }
   
   $myrecid=$_SESSION['MYRECID'];
   
   echo "<h1>ΑΦΜ ".$_SESSION['USERAFM']." / ΜΥΦ ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4)." / Εγγραφή $myrecid (Zoom κινήσεων)</h1>";
      
   if (!empty($_REQUEST['RECORDID'])) {
      $query="SELECT T1.PKGID, T1.DATATYPE, T1.AFM FROM ese_myfrec T1 
         LEFT JOIN ese_myfpkg T2 ON (T2.PKGID=T1.PKGID) 
         WHERE MYRECID=$myrecid AND T2.VATNO=:VATNO";
      $data=array('VATNO'=>$_SESSION['USERAFM']);
      $query2=embed_vars($query,$data);
      if (($rs=$db->Execute($query2))===false) {
         uerror($db->ErrorMsg());
         return GoBack();
      }
      $o1=$rs->FetchNextObject();
      $rs->Close();
      if ($o1===false) {
         uerror("Δεν βρέθηκε η εγγραφή!");
         return GoBack();
      }
   
      $dtp=array($o1->DATATYPE, 1000+$o1->DATATYPE, 10000+$o1->DATATYPE, 11000+$o1->DATATYPE );

      // U_VATNO not required; used for security    
      $query="SELECT * FROM ese_esi 
         WHERE PKGID=:PKGID AND DATATYPE IN (".implode(',', $dtp).") AND U_VATNO=:U_VATNO ";
      $data=array('PKGID'=>(int)$o1->PKGID, 'U_VATNO'=>$_SESSION['USERAFM']);
      if ($o1->DATATYPE<4) {
         $query .= " AND RECV_AFM=:RECV_AFM";
         $data['RECV_AFM'] = $o1->AFM;
      }
      $_SESSION['zoom_myf_zoom_query2'] = embed_vars($query,$data);
   }
   
   $query2=$_SESSION['zoom_myf_zoom_query2'];
   
   $pg=getPage();
	$pgsz=getPageSize('grid17');
   
   $gr1=new cXRID('grid17');
   
   if (($rs=$db->PageExecute($query2,$pgsz,$pg))===false) {
      uerror($db->ErrorMsg());
      return GoBack();
   }
   while ($o1=$rs->FetchNextObject()) {
      show_ese_esi_rec($gr1, $o1);
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   if (empty($gr1->rows)) {
      umessage("Δεν υπάρχουν εγγραφές!");
   }
   else {
      $gr1->play();
   }
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,193);
   echo "<button type=button onclick=\"goTo(195)\">Πακέτο</button>
      <button type=button onclick=\"goTo(188)\">ΜΥΦ Μήνα</button>
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </div>";
}
//--------------------------------------
function del_myf_rec()
{
   global $x2;
   $db=&$x2->db;
   
   $myrecid=$_REQUEST['RECORDID'];
   
   $query="SELECT T1.PKGID, T1.DATATYPE, T1.AFM, T2.ASKTOSEND, T2.PROCSTATUS FROM ese_myfrec T1
         LEFT JOIN ese_myfpkg T2 ON (T2.PKGID=T1.PKGID) WHERE T1.MYRECID=:MYRECID";
   $data=array( 'MYRECID'=>$myrecid );
   if (($rs=$db->Execute($query, $data))===false) {
      uerror($db->ErrorMsg());
      return;
   }
   $o1=$rs->FetchNextObject();
   $rs->Close();
   if ($o1===false) {
      uerror("Η εγγραφή δεν υπάρχει: $myrecid");
      return;
   }
   else if (!empty($o1->ASKTOSEND) && ($o1->PROCSTATUS==='OK' || $o1->PROCSTATUS==='PROCESSING')) {
      uerror("Το πακέτο είναι σε φάση επεξεργασίας ή ολοκληρώθηκε: ".$o1->PKGID);
      return;
   }

   $ctr=new cTRANSACTION($db);
      
   do {
      $query="UPDATE ese_esi SET PKGID = NULL, DATATYPE = NULL WHERE PKGID=$o1->PKGID";
      if (!$db->Execute($query)) {
         uerror(__LINE__.$db->ErrorMsg());
         break;
      }
      
      $query="DELETE FROM ese_myfrec WHERE MYRECID=$myrecid";
      if (!$db->Execute($query)) {
         uerror(__LINE__.$db->ErrorMsg());
         break;
      }
       
   } while (false);
}
//--------------------------------------
function view_pkg_analysis()
{
   global $x2;
   $db=&$x2->db;

   if (!empty($_REQUEST['RECORDID'])) {
      $_SESSION['PKGID'] = (int)$_REQUEST['RECORDID'];
      
      // Use VATNO for security 
      $query="SELECT YEARMON FROM ese_myfpkg WHERE PKGID=:PKGID AND VATNO=:VATNO";
      $data=array('PKGID'=>$_SESSION['PKGID'], 'VATNO'=>$_SESSION['USERAFM']); 
      $query2=embed_vars($query,$data);
      if (($rs=$db->Execute($query2))===false) {
         uerror($db->ErrorMsg());
         return GoBack();
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row===false) {
         uerror("Δεν βρέθηκε η εγγραφή!");
         return GoBack();
      }
      $_SESSION['YEARMON'] = $row[0];
   }
   
   echo "<h1>ΑΦΜ ".$_SESSION['USERAFM']." / ΜΥΦ ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4)." / Πακέτο ".$_SESSION['PKGID']."</h1>";
     
   do_myf_analysis($_SESSION['PKGID']);
}
//--------------------------------------
function view_myf_analysis()
{
   echo "<h1>ΑΦΜ ".$_SESSION['USERAFM']." / ΜΥΦ ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4)." (Ανάλυση μήνα)</h1>";
      
   do_myf_analysis(false);
}
//--------------------------------------
function do_myf_analysis($pkgid)
{
   global $x2;
   $db=&$x2->db;       
?>
<script>
var myrecid, afm, invoices, valueNET, valueVAT, datelastdoc;
$(function(){
   $('input[name=DATELASTDOC]').datepicker();
   $('#myfrec').dialog({autoOpen:false, modal:true, width:360});
} );
function setPkgIds()
{
   $('select[name=PKGID]').append($('<option>', {
      value: 0,
      text: 'Νέο πακέτο'
   }));
   var x, n=grid11.getRowsNum();
   var pkgids=new Array();
   for (var row=0;row<n;row++) {
      x=grid11.cells(row,1).getValue();
      if (pkgids.indexOf(x)<0) {
         pkgids.push(x);
         $('select[name=PKGID]').append($('<option>', {
            value: x,
            text: x+'#'
         }));
      }
   }
}
function oclick(stage, row, col)
{
   myrecid = this.cells(row,0).getValue();
   afm = this.cells(row,4).getValue();
   invoices = this.cells(row,5).getValue(); 
   valueNET = this.cells(row,6).getValue();
   valueVAT = this.cells(row,7).getValue(); 
   datelastdoc = this.cells(row,9).getValue();
   show_popup(); 
}
function winRet(x)
{
	switch (x)
	{
   case 1: // nonoblig on/off
      goRecord(183,afm);
      break;
   case 2: // edit
      onEdit();
      break;
   case 193:
      goRecord(x,myrecid);
      break;
   case 194:
      goRecDelete(x,myrecid);
      break;      
   }
   hide_popup();
}
function onEdit()
{
   $('#top1').hide();
   $('#afm1').hide();
   $('#myfrec').dialog('option', 'title', 'Διόρθωση εγγραφής').dialog('open');
   $('input[name=MYRECID]').val(myrecid); // hidden
   $('input[name=INVOICES]').val(invoices);
   $('input[name=AMOUNT]').val(valueNET.replace('.',''));
   $('input[name=TAX]').val(valueVAT.replace('.',''));
   $('input[name=DATELASTDOC]').datepicker( 'setDate', datelastdoc.substr(6,2)+'-'+datelastdoc.substr(4,2)+'-'+datelastdoc.substr(0,4) );
}
function onAddNew()
{
   if ( $('select[name=PKGID] option').length==0 ) {
      setPkgIds();
   }
   $('#top1').show();
   $('#afm1').show();
   $('#myfrec').dialog('option', 'title', 'Νέα εγγραφή').dialog('open');
   $('input[name=MYRECID]').val(0); // hidden
   $('#datatype').get(0).selectedIndex=0;
   $('input[name=INVOICES]').val('');
   $('input[name=AMOUNT]').val('');
   $('input[name=TAX]').val('');
   $('input[name=DATELASTDOC]').datepicker( 'setDate', '<?php
      echo date('t-m-Y', strtotime(substr($_SESSION['YEARMON'],0,4)."-".substr($_SESSION['YEARMON'],4,2)."-01") );
      ?>' );
}
function onDTypeChange()
{
   if ($('#datatype').val()==5)
      $('#afm1').hide();
   else
      $('#afm1').show();
}
</script>
<div id=myfrec>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST>
<input type=hidden name="FUNCTION" value="184">
<input type=hidden name="MYRECID">
<table>

<tbody id=top1><!-- new rec. -->
<tr>
   <td>Πακέτο</td>
   <td><select name="PKGID"></select></td>
</tr>
<tr>
   <td>Τύπος</td>
   <td><select id=datatype name="DATATYPE" onchange="onDTypeChange()"><?php
      prAssocSelect($x2->MyfDatatype,0);
      ?></select></td>
</tr>
</tbody>

<tbody id=afm1><!-- new rec. -->
<tr>
   <td>ΑΦΜ/ Ταμειακή</td>
   <td><input type=text name="AFM"></td>
</tr>
</tbody>

<tbody>   
<tr>
   <td>Πλήθος παραστατικών</td>
   <td><input type=text name="INVOICES"></td>
</tr>
<tr>
   <td>Καθαρό Ποσό</td>
   <td><input type=text name="AMOUNT"></td>
</tr>
<tr>
   <td>Ποσό ΦΠΑ</td>
   <td><input type=text name="TAX"></td>
</tr>
<tr>
   <td>Τελ. παραστατικό</td>
   <td><input type=text name="DATELASTDOC"></td>
</tr>
<tr>
   <td></td>
   <td><input type=submit value="Ενημέρωση"></td>
</tr>
</tbody>
</table>
</form>
</div>      
<?php   
   $gr1=new cXRID('grid11');
   
   $pg=getPage();
	$pgsz=getPageSize('grid11');
   
   $query="SELECT T1.ASKTOSEND, T2.* FROM ese_myfpkg T1
      LEFT JOIN ese_myfrec T2 ON (T2.PKGID=T1.PKGID) 
      WHERE T1.VATNO=:VATNO AND T1.YEARMON=:YEARMON ";
   if ($pkgid!==false) {
      $query .= " AND T1.PKGID=$pkgid ";
   }
   $query .= " AND T2.PKGID IS NOT NULL
      ORDER BY DATATYPE, AFM";
   $data=array('VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
   if (($rs=$db->PageExecute($query,$pgsz,$pg,$data))===false) {
      uerror( __LINE__.$db->ErrorMsg() );
      return; 
   }
   
   array_push($gr1->cols,
      array('Εγγραφή', 80),
      array('Πακέτο', 80),
      array('Εντολή υποβολής', 80),
      array('Τύπος', 80),
      array('ΑΦΜ/ Ταμειακή', 80),
      array('Πλήθος παραστατικών', 80, 'right'),
      array('Καθαρό Ποσό', 80, 'right'),
      array('Ποσό ΦΠΑ', 80, 'right'),
      array('Μη υπόχρεος', 80),
      array('Τελ. παραστατικό', 80),
      array('Αλλαγή από χρήστη', 60),
      array('Λάθος', 60),
      array('Τελ. ενημέρωση', 120)
      );
      
   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[] = $o1->MYRECID;
      $row1[] = $o1->PKGID;
      $row1[] = myhtml($o1->ASKTOSEND);
      $row1[] = myhtml($x2->DataTypeStr($o1->DATATYPE));
      $row1[] = myhtml($o1->AFM); // afm or cashreg_id (DATATYPE=4)
      $row1[] = $o1->INVOICES; 
      $row1[] = GrNumber($o1->AMOUNT);
      $row1[] = GrNumber($o1->TAX);
      $row1[] = ($o1->NONOBL>0?'NAI':'');
      $row1[] = $o1->DATELASTDOC; // YYYYMMDD
      $row1[] = ($o1->USERINPUT>0?'NAI':'');
      $row1[] = ($o1->APERROR>0?'<span class=red>NAI</span>':'');
      $row1[] = GrDateTime($o1->LASTUPDATE);
   
      $gr1->rows[]=$row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
   
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,182);
   echo "<button type=button onclick=\"goTo(180)\">Πακέτα (όλα)</button>
      <button type=button onclick=\"goTo(182)\">Σύνολα</button>
      <button type=button ".($x2->ULEVEL==3?"disabled":"onclick=\"onAddNew()\"").">Νέα εγγραφή</button>
      <b>
      <a href=\"javascript:goTo(180)\">Νέο ερώτημα</a> |
      <a href=\"javascript:goTo(6)\">Επιστροφή</a>
      </b></div>";
      
   $selx=array(
      array(193, '../img/button_select.png', 'Zoom κινήσεων')
      );
   if ($x2->ULEVEL!=3) {
      array_push($selx,
         '<hr>',
         array(1, '../img/checkedbox16x16.png', 'Μη υπόχρεος'),
         array(2, '../img/button_edit.png', 'Διόρθωση στοιχείων'),
         array(194, '../img/drop.png', 'Διαγραφή στοιχείων')
         );
   }
   draw_popup($selx);
}
//--------------------------------------
function adm_delete_myf()
{
   global $x2;
   $db=&$x2->db;
    
   if ($x2->ULEVEL==2) { // precaution
      return home_page();
   }
   
   $vatno=$_REQUEST['RECORDID'];
   
   $ids=array();
   $query="SELECT PKGID FROM ese_myfpkg 
      WHERE VATNO=:VATNO AND (ASKTOSEND IS NULL OR (PROCSTATUS<>'OK' AND PROCSTATUS<>'PROCESSING'))";
   $data=array('VATNO'=>$vatno);
   if (($rs=$db->Execute($query,$data))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   while ($row=$rs->FetchRow()) {
      $ids[]=$row[0];
   }
   $rs->Close();          
   
   foreach ($ids as $pkgid) {
      $ctr=new cTRANSACTION($db);
      
      do {
         $query="UPDATE ese_esi SET PKGID = NULL, DATATYPE = NULL WHERE PKGID=$pkgid";
         if (!$db->Execute($query)) {
            uerror(__LINE__.$db->ErrorMsg());
            break;
         }
         
         $query="DELETE FROM ese_myfpkg WHERE PKGID=$pkgid";
         if (!$db->Execute($query)) {
            uerror(__LINE__.$db->ErrorMsg());
            break;
         }
         
         $query="DELETE FROM ese_myfrec WHERE PKGID=$pkgid";
         if (!$db->Execute($query)) {
            uerror(__LINE__.$db->ErrorMsg());
            break;
         }
         
         $query="DELETE FROM ese_myferr WHERE PKGID=$pkgid";
         if (!$db->Execute($query)) {
            uerror(__LINE__.$db->ErrorMsg());
            break;
         }
         
         $query="DELETE FROM ese_myfxml WHERE PKGID=$pkgid";
         if (!$db->Execute($query)) {
            uerror(__LINE__.$db->ErrorMsg());
            break;
         }
         
      } while (false);
   }
}
//--------------------------------------
function adm_view_myf_all()
{
   global $x2;
   $db=&$x2->db;
   
   if ($x2->ULEVEL==2) { // precaution
      return home_page();
   }
   
?>
<h1>Κατάλογος δημιουργημένων ΜΥΦ</h1>
<script>
var afm;
function oclick(stage, row, col)
{
   afm = this.cells(row,0).getValue();
   show_popup(); 
}
function winRet(x)
{
	switch (x)
	{
   case 180: // open record
      location.href = location.pathname+'?FUNCTION=180&VATNO='+afm;
      break;
   case 187:
      goRecDelete(x,afm);
      break;
   }
}
</script>
<?php
   
   $pg=getPage();
	$pgsz=getPageSize('grid13');
   
   $query="SELECT VATNO, YEARMON, COUNT(*) CN FROM ese_myfpkg GROUP BY VATNO, YEARMON ORDER BY VATNO, YEARMON";
   if (($rs=$db->PageExecute($query,$pgsz,$pg))===false) {
      uerror(__LINE__.$db->ErrorMsg());
      return;
   }
   
   $gr1=new cXRID('grid13');
   
   $gr1->cols=array(
      array('ΑΦΜ υπόχρεου', 100),
      array('Μήνας', 100),
      array('Πακέτα', 80)
   );
   
   while ($o1=$rs->FetchNextObject()) {
      $row1=array();
      
      $row1[] = myhtml($o1->VATNO);
      $row1[] = sprintf("%2s-%4s", substr($o1->YEARMON, 4, 2), substr($o1->YEARMON, 0, 4) );
      $row1[] = $o1->CN;
      
      $gr1->rows[] = $row1;
   }
   $epage=$rs->LastPageNo();
   $rs->Close();
      
   $gr1->click='oclick';
   $gr1->play();
   
   echo "<div id=tbar2>";
   print_page_navEx($pg,$epage,181);
   echo RefreshStr(181)." <b><a href=\"javascript:goTo(6)\">Επιστροφή</a></b></div>";
      
   $selx=array(
      array(180, '../img/open_folder.gif', 'Πακέτα υπόχρεου')
      );
   if ($x2->ULEVEL!=3) {
      $selx[] = array(187, '../img/drop.png', 'Διαγραφή όλων των ΜΥΦ του υπόχρεου');
   }
   draw_popup($selx);
}
//--------------------------------------
function calculate_sha1() 
{
   $sigs=explode("\n", $_REQUEST['OTHERSHA1']);
   $bytes=array();
      
   foreach($sigs as $s1) {
      $hex=trim($s1);
      $l=strlen($hex);
      for ($i=0;$i<$l;$i+=2) {
         $s1=substr($hex,$i,2);
         sscanf($s1, "%X", $x);
         $bytes[]= $x;
      }
   }
      
   $iv = call_user_func_array("pack", array_merge(array("C*"), $bytes));
      
   umessage( strtoupper(sha1($iv)) ); 
   
   echo "<div>
      <button type=button onclick=\"goTo(160)\">Repeat</button>
      <button type=button onclick=\"goTo(6)\">Cancel</button>
      </div>";
}
//--------------------------------------
function ask_for_sql()
{
?>
<form action="<?php echo myhtml($_SERVER['PHP_SELF']); ?>" method=POST name="goForm">
<input type=hidden name="FUNCTION" value="512">
<table>
<tr>
   <td>SQL command</td>
   <td><textarea name="SQLCMD" style="width:480px; height:320px;"><?php echo myhtml(@$_SESSION['SQLCMD']); ?></textarea></td>
</tr>   
<tr>
   <td></td>
   <td>
      <input type=submit value="Execute">
      <input type=button value="Cancel" onclick="goTo(6)">
   </td>
</tr>   
</table>
</form>
<?php
}
//--------------------------------------
function execute_sql()
{
   global $x2;
   $db=&$x2->db;
?>
<style>
#result {
   font-family:Arial, Helvetica, sans-serif;
   width:100%;
   border-collapse:collapse;
}
#result td, #customers th {
   font-size:1em;
   border:1px solid #98bf21;
   padding:3px 7px 2px 7px;
}
#result th {
   font-size:1.1em;
   text-align:left;
   padding-top:5px;
   padding-bottom:4px;
   background-color:#A7C942;
   color:#ffffff;
}
#result tr.alt td {
   color:#000000;
   background-color:#EAF2D3;
}
</style>
<?php
   $query=$_REQUEST['SQLCMD'];
   $_SESSION['SQLCMD']=$query; // save for later use
   if (($rs=$db->Execute($query))===false) {
      echo $db->ErrorMsg();
   }
   else {
      $nf=$rs->FieldCount();
      
      echo "<table id=result><tr>";
      for ($i=0;$i<$nf;$i++) {
         $o1=$rs->FetchField($i);
         echo "<th>".myhtml($o1->name)."</th>";
      }
      echo "</tr>";
      
      while ($row=$rs->FetchRow()) {
         echo "<tr>";
         for ($i=0;$i<$nf;$i++) {
            echo "<td>".myhtml($row[$i])."</td>";
         }
         echo "</tr>";
      }
      $rs->Close();
      echo "</table>";
   }
   
    echo "<div>
      <button type=button onclick=\"goTo(511)\">Repeat</button>
      <button type=button onclick=\"goTo(6)\">Cancel</button>
      </div>";
}
//--------------------------------------
function send_myf_month()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Υποβολή ΜΥΦ (ΑΦΜ ".$_SESSION['USERAFM']." / ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4).")</h1>";
            
   do {
      // NULL 'asktosend'
      $query="SELECT COUNT(*) FROM ese_myfpkg T1
         LEFT JOIN ese_myfrec T2 ON (T2.PKGID=T1.PKGID)
         WHERE T1.VATNO=:VATNO AND T1.YEARMON=:YEARMON AND T1.ASKTOSEND IS NULL AND T2.DATATYPE=5";
      $data=array( 'VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror($db->ErrorMsg());
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if (($nullATS=$row[0])>1) {
         uerror("Υπάρχουν περισσότερες από 1 εγγραφές με [Εξοδα χωρίς τιμολόγιο]. Η υποβολή δεν μπορεί να γίνει!");
         break;
      }
      
      // not null 'asktosend'
      $query="SELECT COUNT(*) FROM ese_myfpkg T1
         LEFT JOIN ese_myfrec T2 ON (T2.PKGID=T1.PKGID)
         WHERE T1.VATNO=:VATNO AND T1.YEARMON=:YEARMON AND T1.ASKTOSEND IS NOT NULL AND T2.DATATYPE=5";
      $data=array( 'VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
      if (($rs=$db->Execute($query,$data))===false) {
         uerror($db->ErrorMsg());
         break;
      }
      $row=$rs->FetchRow();
      $rs->Close();
      if ($row[0]>0 && $nullATS>0) {
         uerror("Εχει ήδη γίνει υποβολή για [Εξοδα χωρίς τιμολόγιο]. Η υποβολή αυτή δεν μπορεί να γίνει!");
         break;
      }
      
      $query="UPDATE ese_myfpkg SET ASKTOSEND=:ASKTOSEND WHERE VATNO=:VATNO AND YEARMON=:YEARMON AND ASKTOSEND IS NULL";
      $data=array('ASKTOSEND'=>date('Ymdhis'), 'VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
      if ($db->Execute($query,$data)) {
         umessage("Η διαδικασία υποβολής ενεργοποιήθηκε. Παρακαλούμε ελέγξτε το αποτέλεσμα σε 24 ώρες!");
      }
      else {
         uerror($db->ErrorMsg());
      }   
   } while (false);
   
   GoBack();      
}
//--------------------------------------
function send_myf_cancel()
{
   global $x2;
   $db=&$x2->db;
   
   echo "<h1>Ακύρωση υποβολής ΜΥΦ (ΑΦΜ ".$_SESSION['USERAFM']." / ".substr($_SESSION['YEARMON'],4,2)."-".
      substr($_SESSION['YEARMON'],0,4).")</h1>";
      
   $query="UPDATE ese_myfpkg SET ASKTOSEND = NULL, STARTPROC = NULL
      WHERE VATNO=:VATNO AND YEARMON=:YEARMON AND ASKTOSEND IS NOT NULL AND STARTPROC IS NOT NULL";
   $data=array('VATNO'=>$_SESSION['USERAFM'], 'YEARMON'=>$_SESSION['YEARMON']);
   if ($db->Execute($query,$data)) {
      umessage("Η διαδικασία ολοκληρώθηκε!");
   }
   else {
      uerror($db->ErrorMsg());
   }
      
   GoBack();
}
//--------------------------------------
?>