statistiche e provvigioni. Dava un errore fatale nelle oprazioni relative git-svn-id: svn://10.65.10.50/trunk@5394 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include <applicat.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <progind.h>
 | 
						|
#include <urldefid.h>
 | 
						|
 | 
						|
#include "velib.h" 
 | 
						|
 | 
						|
#include "ve6200a.h"
 | 
						|
 | 
						|
class TFatturazione_bolle_app : public TApplication
 | 
						|
{ 
 | 
						|
  TArray _file;
 | 
						|
  void open_files(int logicnum, ...);
 | 
						|
 | 
						|
protected: // TApplication
 | 
						|
  virtual bool create();
 | 
						|
  virtual bool menu(MENU_TAG mt);
 | 
						|
 | 
						|
public:
 | 
						|
  TFatturazione_bolle_app() { } 
 | 
						|
  virtual ~TFatturazione_bolle_app() { }
 | 
						|
};
 | 
						|
 | 
						|
void TFatturazione_bolle_app::open_files(int logicnum, ...)  
 | 
						|
{  
 | 
						|
  va_list marker;
 | 
						|
  va_start(marker, logicnum);
 | 
						|
  while (logicnum > 0)
 | 
						|
  {
 | 
						|
    CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
 | 
						|
    _file.add(new TLocalisamfile(logicnum), logicnum);
 | 
						|
    logicnum = va_arg(marker, int);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
bool TFatturazione_bolle_app::create()
 | 
						|
{
 | 
						|
  open_files(LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_DOC, LF_RIGHEDOC, LF_OCCAS, LF_ANAMAG, LF_MOVMAG, LF_RMOVMAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, 0);
 | 
						|
  dispatch_e_menu(MENU_ITEM(1));
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TFatturazione_bolle_app::menu(MENU_TAG)
 | 
						|
{
 | 
						|
  TMask m("ve6200a");
 | 
						|
  while (m.run() == K_ENTER)
 | 
						|
  {                              
 | 
						|
    TIndwin iw(48, "Inizializzazione ...\n ", TRUE, FALSE, 48);
 | 
						|
  
 | 
						|
    begin_wait();
 | 
						|
  
 | 
						|
    const TDate data_elab = m.get(F_DATA_ELAB); 
 | 
						|
    const int anno = data_elab.year();
 | 
						|
    
 | 
						|
    const long dc = m.get_long(F_CODICE_CLIFO_DA);
 | 
						|
    const long ac = m.get_long(F_CODICE_CLIFO_A);
 | 
						|
    const long da = m.get_long(F_CODICE_AGENTE_DA);
 | 
						|
    const long aa = m.get_long(F_CODICE_AGENTE_A);
 | 
						|
    const long dz = m.get_long(F_CODICE_ZONA_DA); 
 | 
						|
    const long az = m.get_long(F_CODICE_ZONA_A);
 | 
						|
    
 | 
						|
    const TDate dd = m.get(F_DATA_DOCUMENTO_DA);
 | 
						|
    TString st_da = m.get(F_DATA_DOCUMENTO_A);
 | 
						|
    const TDate ad = st_da.not_empty() ? (const char*)st_da : data_elab;
 | 
						|
    const TString& codnum = m.get(F_CODICE_NUMERAZIONE);
 | 
						|
    const long dn = m.get_long(F_NUMERO_DOCUMENTO_DA);
 | 
						|
    const long an = m.get_long(F_NUMERO_DOCUMENTO_A);
 | 
						|
    
 | 
						|
    TFatturazione_bolle eld(m.get(F_CODICE_ELAB));
 | 
						|
    TToken_string tipidoc(24), statidoc(10);
 | 
						|
    eld.tipi_validi(tipidoc); 
 | 
						|
    eld.stati_validi(statidoc);
 | 
						|
      
 | 
						|
    TLista_clienti clienti;
 | 
						|
    const int tot_cli = clienti.leggi(dc, ac, da, aa, dz, az);
 | 
						|
    
 | 
						|
    TString msg(80);
 | 
						|
    for (int c = 0; c < tot_cli && !iw.iscancelled(); c++)
 | 
						|
    { 
 | 
						|
      const long codcli = clienti[c];     // Codice cliente in esame
 | 
						|
      msg = "Elaborazione dei documenti del cliente "; 
 | 
						|
      msg << codcli << " ...";
 | 
						|
      iw.set_text(msg);                   // Messaggio sul cliente
 | 
						|
      do_events();                        // Attende visualizzazione
 | 
						|
      
 | 
						|
      TLista_documenti din, dout;         // Legge tutti i documenti di input
 | 
						|
      din.read('D', 'C', codcli, anno, tipidoc, statidoc, dd, ad, codnum, dn, an);
 | 
						|
      if (din.items() == 0)
 | 
						|
        continue;
 | 
						|
 | 
						|
      // Crea documenti di output
 | 
						|
      bool ok = eld.elabora(din, dout, data_elab);
 | 
						|
      if (ok) 
 | 
						|
      {
 | 
						|
        msg << '\n' << din.items() << " documenti raggruppati in " << dout.items(); 
 | 
						|
        iw.set_text(msg);                   // Messaggio sul cliente
 | 
						|
        do_events();                        // Attende visualizzazione
 | 
						|
 | 
						|
        int err = dout.write();     // Scrive documenti di output
 | 
						|
        if (err == NOERR)
 | 
						|
        {
 | 
						|
          err = din.rewrite();      // Aggiorna stato dei documenti di input
 | 
						|
          if (err != NOERR)
 | 
						|
            ok = error_box("Errore %d durante la scrittura dei documenti raggruppati!", err);
 | 
						|
        }
 | 
						|
        else
 | 
						|
          ok = error_box("Errore %d durante l'aggiornamento dei documenti da raggruppare!", err);
 | 
						|
      }
 | 
						|
      else
 | 
						|
      {
 | 
						|
        ok = error_box("I documenti relativi al cliente %ld non sono stati elaborati.",
 | 
						|
                       codcli);
 | 
						|
      }  
 | 
						|
      if (!ok)   // In case di errore ...
 | 
						|
        break;   // ... termina qui l'elaborazione.
 | 
						|
    }
 | 
						|
    end_wait();
 | 
						|
  }
 | 
						|
  return FALSE;
 | 
						|
}
 | 
						|
 | 
						|
int ve6200 (int argc, char **argv)
 | 
						|
{
 | 
						|
  TFatturazione_bolle_app a;
 | 
						|
  a.run (argc, argv, "Fatturazione Bolle");
 | 
						|
  return TRUE;
 | 
						|
}
 |