Files correlati : vearea.men ve4.exe Ricompilazione Demo : [ ] Commento : Aggiunto programma aggiornamento codici IVA git-svn-id: svn://10.65.10.50/branches/R_10_00@22416 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			186 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include <applicat.h>
 | 
						|
#include <automask.h>
 | 
						|
#include <dongle.h>
 | 
						|
#include <lffiles.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <recset.h>
 | 
						|
#include <relation.h>
 | 
						|
 | 
						|
#include "ve4.h"
 | 
						|
#include "ve4200a.h"
 | 
						|
 | 
						|
#include "condv.h"
 | 
						|
#include "rcondv.h"
 | 
						|
#include "doc.h"
 | 
						|
#include "rdoc.h"
 | 
						|
 | 
						|
#include "../mg/anamag.h"
 | 
						|
 | 
						|
class TAggiornaIVA_msk : public TAutomask
 | 
						|
{
 | 
						|
private:
 | 
						|
  bool anteprima(TISAM_recordset& recset) const;
 | 
						|
  bool aggiorna(TISAM_recordset& recset) const;
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						|
 | 
						|
public:
 | 
						|
  bool elabora(int logicnum) const;
 | 
						|
  TAggiornaIVA_msk() : TAutomask("ve4200a") {}
 | 
						|
};
 | 
						|
 | 
						|
bool TAggiornaIVA_msk::anteprima(TISAM_recordset& recset) const
 | 
						|
{
 | 
						|
  const TRecnotype tot = recset.items();
 | 
						|
  if (tot == 0)
 | 
						|
    return warning_box(TR("Non ci sono record da elaborare"));
 | 
						|
 | 
						|
  TCursor* cur = recset.cursor();
 | 
						|
  TLocalisamfile& arc = cur->file();
 | 
						|
 | 
						|
  const char *fields = RDOC_CODIVA;
 | 
						|
  const char* head = "IVA@4";
 | 
						|
  switch(arc.num())
 | 
						|
  {
 | 
						|
  case LF_RIGHEDOC:
 | 
						|
    fields = RDOC_ANNO"|"RDOC_CODNUM"|"RDOC_NDOC"|33->"DOC_DATADOC"|33->"DOC_STATO"|"RDOC_CODART"|"RDOC_CODIVA;
 | 
						|
    head = "Anno|Num.|Doc.@7|Data@10|Stato|Articolo@20|IVA@4";
 | 
						|
    break;
 | 
						|
  case LF_ANAMAG:
 | 
						|
    fields = ANAMAG_CODART"|"ANAMAG_DESCR"|"ANAMAG_CODIVA;
 | 
						|
    head = "Articolo@20|Descrizione@50|IVA@4";
 | 
						|
    break;
 | 
						|
  case LF_RCONDV:
 | 
						|
    fields = RCONDV_TIPO"|"RCONDV_CODCF"|"RCONDV_COD"|52->"CONDV_VALFIN"|"RCONDV_CODRIGA"|"RCONDV_CODIVA;
 | 
						|
    head = "Tipo|Cliente|Cod.|Data Fine@10|Articolo@20|IVA@4";
 | 
						|
    break;
 | 
						|
  default: break;
 | 
						|
  }
 | 
						|
 | 
						|
  TCursor_sheet sheet(cur, fields, arc.description(), head, 0, 1);
 | 
						|
  return sheet.run() == K_ENTER;
 | 
						|
}
 | 
						|
 | 
						|
bool TAggiornaIVA_msk::aggiorna(TISAM_recordset& recset) const
 | 
						|
{
 | 
						|
  const TRecnotype tot = recset.items();
 | 
						|
 | 
						|
  if (tot == 0 || !yesno_box(FR("Si conferma l'aggiornamento di %ld record?"), tot))
 | 
						|
    return false;
 | 
						|
 | 
						|
  TLocalisamfile& arc = recset.cursor()->file();
 | 
						|
  TRectype& rec = arc.curr();
 | 
						|
  const TString& newiva = get(F_NEWCODIVA);
 | 
						|
 | 
						|
  TProgind pi(tot, TR("Aggiornamento codice IVA"));
 | 
						|
  for (bool ok = recset.move_first(); ok; ok = recset.move_next())
 | 
						|
  {
 | 
						|
    if (!pi.addstatus(1))
 | 
						|
      return false;
 | 
						|
    rec.put("CODIVA", newiva);
 | 
						|
    if (arc.rewrite() != NOERR)
 | 
						|
      return cantwrite_box(arc.name());
 | 
						|
  }
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
bool TAggiornaIVA_msk::elabora(int logicnum) const
 | 
						|
{
 | 
						|
  const TString& oldiva = get(F_OLDCODIVA);
 | 
						|
  const TDate dal = get(F_DAL);
 | 
						|
  const TDate al(31,12,dal.year());
 | 
						|
  const TString& codnum = get(F_CODNUM);
 | 
						|
  const TString& stato = get(F_STATO);
 | 
						|
 | 
						|
  TString query;
 | 
						|
  query << "USE " << logicnum << " SELECT (CODIVA==\"" << oldiva << "\")";
 | 
						|
  switch (logicnum)
 | 
						|
  {
 | 
						|
  case LF_RIGHEDOC:
 | 
						|
    {
 | 
						|
      query << "&&(BETWEEN(33->DATADOC," << dal.date2ansi() << "," << al.date2ansi() << "))"
 | 
						|
            << "&&(33->STATO==\"" << stato << "\")";
 | 
						|
      query << "\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM==CODNUM NDOC==NDOC";
 | 
						|
      TString range;
 | 
						|
      range << "PROVV=D ANNO=" << dal.year() << " CODNUM=" << codnum;
 | 
						|
      query << "\nFROM " << range << "\nTO " << range;
 | 
						|
    }
 | 
						|
    break;
 | 
						|
  case LF_RCONDV:
 | 
						|
    {
 | 
						|
      query << "&&(STR((ANSI(52->VALFIN)==0)||(ANSI(52->VALFIN)>=" << dal.date2ansi() <<")))";
 | 
						|
      query << "\nJOIN CONDV INTO TIPO=TIPO CATVEN==CATVEN TIPOCF=TIPOCF CODCF==CODCF COD==COD";
 | 
						|
    }
 | 
						|
    break;
 | 
						|
  default:
 | 
						|
    break;
 | 
						|
  }
 | 
						|
 | 
						|
  TISAM_recordset recset(query);
 | 
						|
 | 
						|
  if (!anteprima(recset))
 | 
						|
    return false;
 | 
						|
 | 
						|
  return aggiorna(recset);
 | 
						|
}
 | 
						|
 | 
						|
bool TAggiornaIVA_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
						|
{
 | 
						|
  return true;
 | 
						|
}
 | 
						|
 | 
						|
class TAggiornaIVA_app : public TSkeleton_application
 | 
						|
{
 | 
						|
protected:
 | 
						|
  virtual bool create();
 | 
						|
  virtual void main_loop();
 | 
						|
};
 | 
						|
 | 
						|
bool TAggiornaIVA_app::create()
 | 
						|
{
 | 
						|
  Tdninst dninst;
 | 
						|
  bool good = dninst.find_serno();
 | 
						|
  if (good)
 | 
						|
  {
 | 
						|
    TString msg; 
 | 
						|
    good = dninst.test_cmdline("MustCall", false, msg) == 0;
 | 
						|
  }
 | 
						|
  if (!good)
 | 
						|
    return error_box(FR("Chiave %d non abilitata all'utilizzo di questa procedura"), dongle().number());
 | 
						|
  return TSkeleton_application::create();
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
void TAggiornaIVA_app::main_loop()
 | 
						|
{
 | 
						|
  TAggiornaIVA_msk m;
 | 
						|
  while (m.run() == K_ENTER)
 | 
						|
  {
 | 
						|
    const int file = m.get_int(F_FILE);
 | 
						|
    switch (file)
 | 
						|
    {
 | 
						|
    case LF_DOC:
 | 
						|
    case LF_RIGHEDOC:
 | 
						|
      m.elabora(LF_RIGHEDOC);
 | 
						|
      break;
 | 
						|
    case LF_ANAMAG:
 | 
						|
      m.elabora(LF_ANAMAG);
 | 
						|
      break;
 | 
						|
    case LF_CONDV:
 | 
						|
    case LF_RCONDV:
 | 
						|
      m.elabora(LF_RCONDV);
 | 
						|
      break;
 | 
						|
    default: break;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
int ve4200(int argc, char* argv[])
 | 
						|
{              
 | 
						|
  TAggiornaIVA_app r;
 | 
						|
  r.run(argc, argv, TR("Aggiornamento codici IVA"));
 | 
						|
  return 0;
 | 
						|
}
 |