#include "cg6903.h"
#include "cg6900a.h"

bool TRip_flag::create()
{
  TApplication::create();

  _mov   = new TLocalisamfile (LF_MOV); 

  dispatch_e_menu (BAR_ITEM(1));

  return TRUE;
}

bool TRip_flag::destroy()
{
  delete _mov;                          

  return TApplication::destroy();
}

bool TRip_flag::set()
{              
  TMask msk ("cg6903a");
  KEY k;
      
  k = msk.run();
  
  if (k == K_ENTER)
  {
    long  ditta  = msk.get_long(F_DITTAINV);
    TDate datalim (msk.get(F_DATA));
    bool  rippn  = msk.get_bool(F_RIPPN);
    bool  ripiva = msk.get_bool(F_RIPIVA);
    
    if (!rippn && !ripiva) return FALSE; // Se non flaggo nessuno dei due non ha
                                         // senso scorrere l'archivio.
                                         
    set_firm(ditta);
    
    long cicli = _mov->items();
    _prog = new TProgind(cicli,"Ripristino movimenti in corso... Prego attendere.",FALSE);

    _mov->setkey(1);
    _mov->zero();

    for (_mov->first();!_mov->eof();_mov->next())
    { 
      TDate datareg (_mov->get_date(MOV_DATAREG));
      
      _prog->addstatus(1);
      
      if (datareg < datalim) continue;
      
      if (rippn)                      
        _mov->zero(MOV_INVIATO);
      if (ripiva)  
        _mov->zero(MOV_INVIVA);

      _mov->rewrite();
    }
    delete _prog;
  }

  return FALSE;
}

bool TRip_flag::menu(MENU_TAG m)
{  
  if (m == BAR_ITEM(1))  
    return set();
    
  return FALSE;
}
