Suppporto statistiche di vendita
git-svn-id: svn://10.65.10.50/trunk@5290 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									eb223fa499
								
							
						
					
					
						commit
						3a358709f1
					
				@ -462,7 +462,9 @@ class TDocumento : public TMultiple_rectype  // velib03
 | 
				
			|||||||
  static TString16 _codiva_spese;
 | 
					  static TString16 _codiva_spese;
 | 
				
			||||||
  static TString16 _codiva_bolli;
 | 
					  static TString16 _codiva_bolli;
 | 
				
			||||||
  char _stato_originale;
 | 
					  char _stato_originale;
 | 
				
			||||||
  
 | 
					  static bool _has_mag;
 | 
				
			||||||
 | 
					  static bool _has_stat_ven;
 | 
				
			||||||
 | 
					  static bool _has_provv;
 | 
				
			||||||
  int _liv_len[4];
 | 
					  int _liv_len[4];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//  TRecord_array _rows;  // Array di TRectype per le righe documenti di vendita.
 | 
					//  TRecord_array _rows;  // Array di TRectype per le righe documenti di vendita.
 | 
				
			||||||
@ -495,6 +497,7 @@ protected:
 | 
				
			|||||||
  static void test_firm();
 | 
					  static void test_firm();
 | 
				
			||||||
  const TString16 & codiva_spese() const { ((TDocumento *)this)->test_firm(); return _codiva_spese;} 
 | 
					  const TString16 & codiva_spese() const { ((TDocumento *)this)->test_firm(); return _codiva_spese;} 
 | 
				
			||||||
  const TString16 & codiva_bolli() const { ((TDocumento *)this)->test_firm(); return _codiva_bolli;} 
 | 
					  const TString16 & codiva_bolli() const { ((TDocumento *)this)->test_firm(); return _codiva_bolli;} 
 | 
				
			||||||
 | 
					  void check_modules();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  void dirty_fields();
 | 
					  void dirty_fields();
 | 
				
			||||||
 | 
				
			|||||||
@ -38,6 +38,10 @@
 | 
				
			|||||||
#include <modaut.h>
 | 
					#include <modaut.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __SVLIB01_H
 | 
				
			||||||
 | 
					#include "../sv/svlib01.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../mg/movmag.h"
 | 
					#include "../mg/movmag.h"
 | 
				
			||||||
///////////////////////////////////////////////////////////
 | 
					///////////////////////////////////////////////////////////
 | 
				
			||||||
// Movimento di magazzino
 | 
					// Movimento di magazzino
 | 
				
			||||||
@ -230,6 +234,11 @@ TAssoc_array TDocumento::_tipi;
 | 
				
			|||||||
TAssoc_array TDocumento::_numerazioni;
 | 
					TAssoc_array TDocumento::_numerazioni;
 | 
				
			||||||
TString16 TDocumento::_codiva_spese;
 | 
					TString16 TDocumento::_codiva_spese;
 | 
				
			||||||
TString16 TDocumento::_codiva_bolli;
 | 
					TString16 TDocumento::_codiva_bolli;
 | 
				
			||||||
 | 
					HIDDEN TStats_agg _st_agg;
 | 
				
			||||||
 | 
					HIDDEN TAssoc_array _docs_to_agg;
 | 
				
			||||||
 | 
					bool TDocumento::_has_mag = 3;
 | 
				
			||||||
 | 
					bool TDocumento::_has_stat_ven = 3;
 | 
				
			||||||
 | 
					bool TDocumento::_has_provv = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDocumento::TDocumento()
 | 
					TDocumento::TDocumento()
 | 
				
			||||||
          : TMultiple_rectype(LF_DOC), _condv(NULL),
 | 
					          : TMultiple_rectype(LF_DOC), _condv(NULL),
 | 
				
			||||||
@ -242,6 +251,7 @@ TDocumento::TDocumento()
 | 
				
			|||||||
  set_memo_fld("G1");
 | 
					  set_memo_fld("G1");
 | 
				
			||||||
  for (int i = 3 ; i >= 0; i--)
 | 
					  for (int i = 3 ; i >= 0; i--)
 | 
				
			||||||
    _liv_len[i] = 0;  
 | 
					    _liv_len[i] = 0;  
 | 
				
			||||||
 | 
					  check_modules();
 | 
				
			||||||
 }
 | 
					 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDocumento::TDocumento(const TDocumento & d)
 | 
					TDocumento::TDocumento(const TDocumento & d)
 | 
				
			||||||
@ -250,6 +260,7 @@ TDocumento::TDocumento(const TDocumento & d)
 | 
				
			|||||||
{                                                                             
 | 
					{                                                                             
 | 
				
			||||||
  add_file(LF_RIGHEDOC, "NRIGA");
 | 
					  add_file(LF_RIGHEDOC, "NRIGA");
 | 
				
			||||||
  copy(d);
 | 
					  copy(d);
 | 
				
			||||||
 | 
					  check_modules();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc,
 | 
					TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc,
 | 
				
			||||||
@ -262,6 +273,7 @@ TDocumento::TDocumento(char provv, int anno, const char* codnum, long numdoc,
 | 
				
			|||||||
  _codcf = new TRecfield(*this, "CODCF");
 | 
					  _codcf = new TRecfield(*this, "CODCF");
 | 
				
			||||||
  _cod_occas = new TRecfield(*this, "OCFPI");
 | 
					  _cod_occas = new TRecfield(*this, "OCFPI");
 | 
				
			||||||
  set_memo_fld("G1");
 | 
					  set_memo_fld("G1");
 | 
				
			||||||
 | 
					  check_modules();
 | 
				
			||||||
  if (numdoc <= 0)
 | 
					  if (numdoc <= 0)
 | 
				
			||||||
  { 
 | 
					  { 
 | 
				
			||||||
    numdoc = 0;
 | 
					    numdoc = 0;
 | 
				
			||||||
@ -285,6 +297,7 @@ TDocumento::TDocumento(const TRectype& rec, TCond_vendita * condv)
 | 
				
			|||||||
  read(rec);
 | 
					  read(rec);
 | 
				
			||||||
  for (int i = 3 ; i >= 0; i--)
 | 
					  for (int i = 3 ; i >= 0; i--)
 | 
				
			||||||
    _liv_len[i] = 0;
 | 
					    _liv_len[i] = 0;
 | 
				
			||||||
 | 
					  check_modules();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDocumento::~TDocumento()
 | 
					TDocumento::~TDocumento()
 | 
				
			||||||
@ -297,6 +310,16 @@ TDocumento::~TDocumento()
 | 
				
			|||||||
  if (_esenzione != NULL) delete _esenzione;
 | 
					  if (_esenzione != NULL) delete _esenzione;
 | 
				
			||||||
}  
 | 
					}  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TDocumento::check_modules()
 | 
				
			||||||
 | 
					{ 
 | 
				
			||||||
 | 
					  if (_has_mag == 3)
 | 
				
			||||||
 | 
					  {               
 | 
				
			||||||
 | 
					    _has_mag = main_app().has_module(MGAUT, CHK_DONGLE);
 | 
				
			||||||
 | 
					    _has_stat_ven = main_app().has_module(SVAUT, CHK_DONGLE);
 | 
				
			||||||
 | 
					    _has_provv = main_app().has_module(PRAUT, CHK_DONGLE);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TDocumento::test_firm()
 | 
					void TDocumento::test_firm()
 | 
				
			||||||
{                
 | 
					{                
 | 
				
			||||||
  const long new_firm = prefix().get_codditta();
 | 
					  const long new_firm = prefix().get_codditta();
 | 
				
			||||||
@ -583,6 +606,27 @@ int TDocumento::read(TBaseisamfile& f, word op, word lockop)
 | 
				
			|||||||
  if (is_fattura())
 | 
					  if (is_fattura())
 | 
				
			||||||
    set_riga_esenzione();
 | 
					    set_riga_esenzione();
 | 
				
			||||||
  _stato_originale = stato();
 | 
					  _stato_originale = stato();
 | 
				
			||||||
 | 
					  if (tipo().statistiche() && _has_stat_ven)
 | 
				
			||||||
 | 
					  {       
 | 
				
			||||||
 | 
					    TString80 key(get(DOC_PROVV)); key << get(DOC_ANNO); key << get(DOC_CODNUM); key << get(DOC_NDOC);
 | 
				
			||||||
 | 
					    TObject * o = _docs_to_agg.objptr(key);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if ( lockop >= _lock && o == NULL)
 | 
				
			||||||
 | 
					    {          
 | 
				
			||||||
 | 
					      _docs_to_agg.add(key, key);
 | 
				
			||||||
 | 
					      for (int i = physical_rows(); i > 0; i--)
 | 
				
			||||||
 | 
					        _st_agg.sub(row(i));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    else 
 | 
				
			||||||
 | 
					      if (lockop == _unlock && o != NULL)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        _docs_to_agg.remove(key);
 | 
				
			||||||
 | 
					        for (int i = physical_rows(); i > 0; i--)
 | 
				
			||||||
 | 
					          _st_agg.add(row(i));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    if (_docs_to_agg.items() == 0)
 | 
				
			||||||
 | 
					      _st_agg.update();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  return err;
 | 
					  return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -891,6 +935,18 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const
 | 
				
			|||||||
        err = occ.rewrite(o);
 | 
					        err = occ.rewrite(o);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  if (tipo().statistiche() && _has_stat_ven)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					   TString80 key(get(DOC_PROVV)); key << get(DOC_ANNO); key << get(DOC_CODNUM); key << get(DOC_NDOC);
 | 
				
			||||||
 | 
					   TObject * o = _docs_to_agg.objptr(key);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					   if (o != NULL)
 | 
				
			||||||
 | 
					     _docs_to_agg.remove(key);
 | 
				
			||||||
 | 
					   for (int i = physical_rows(); i > 0; i--)
 | 
				
			||||||
 | 
					     _st_agg.add(myself.row(i));
 | 
				
			||||||
 | 
					   if (_docs_to_agg.items() == 0)
 | 
				
			||||||
 | 
					     _st_agg.update();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  return err;  
 | 
					  return err;  
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
                    // eliminare anche il mov di mag. ??????
 | 
					                    // eliminare anche il mov di mag. ??????
 | 
				
			||||||
@ -914,6 +970,16 @@ int TDocumento::remove(TBaseisamfile& f) const
 | 
				
			|||||||
      mov.remove(m);
 | 
					      mov.remove(m);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  if (tipo().statistiche() && _has_stat_ven)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TString80 key(get(DOC_PROVV)); key << get(DOC_ANNO); key << get(DOC_CODNUM); key << get(DOC_NDOC);
 | 
				
			||||||
 | 
					    TObject * o = _docs_to_agg.objptr(key);
 | 
				
			||||||
 | 
					     
 | 
				
			||||||
 | 
					    if (o != NULL)
 | 
				
			||||||
 | 
					      _docs_to_agg.remove(key);
 | 
				
			||||||
 | 
					    if (_docs_to_agg.items() == 0)
 | 
				
			||||||
 | 
					      _st_agg.update();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
return TMultiple_rectype::remove(f);
 | 
					return TMultiple_rectype::remove(f);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user