Patch level : 10.0
Files correlati : ps1001300a.msk ps1001.exe Ricompilazione Demo : [ ] Commento : Migliorata gestione abilitazione bottoni di salvataggio e modifica git-svn-id: svn://10.65.10.50/trunk@20424 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									6ffa82ad5d
								
							
						
					
					
						commit
						28bc6659d7
					
				@ -7,12 +7,10 @@ int main(int argc, char** argv)
 | 
				
			|||||||
  int n = argc > 1 ? atoi(argv[1]+1) : 0;
 | 
					  int n = argc > 1 ? atoi(argv[1]+1) : 0;
 | 
				
			||||||
  switch(n)
 | 
					  switch(n)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
  case 0: ps1001100(argc, argv); break; //Importazione movimento di analitica da righe in *.csv (DINAMICA)
 | 
					  case  0: ps1001100(argc, argv); break; //Importazione movimento di analitica da righe in *.csv (DINAMICA)
 | 
				
			||||||
  case 1: ps1001200(argc, argv); break; //Importazione di N movimenti analitici di preventivo in *.csv (CRPA e DINAMICA)
 | 
					  case  1: ps1001200(argc, argv); break; //Importazione di N movimenti analitici di preventivo in *.csv (CRPA e DINAMICA)
 | 
				
			||||||
  case 2: ps1001300(argc,argv); break;  //Gestione budget (CRPA e DINAMICA)
 | 
					  case  2: ps1001300(argc, argv); break; //Gestione budget (CRPA e DINAMICA)
 | 
				
			||||||
  default:
 | 
					  default: ps1001100(argc, argv); break;
 | 
				
			||||||
    ps1001100(argc, argv); break;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  exit(0);
 | 
					 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -456,7 +456,7 @@ void TBudget_Import::elabora_input(const TFilename& file, TLog_report& log)
 | 
				
			|||||||
    //..e gli elementi sono array con le righe del file di input (con la stessa key ma fase\conto etc. diversi)
 | 
					    //..e gli elementi sono array con le righe del file di input (con la stessa key ma fase\conto etc. diversi)
 | 
				
			||||||
    while (_trasfile->read(curr) == NOERR) 
 | 
					    while (_trasfile->read(curr) == NOERR) 
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      pi.setstatus(_trasfile->read_file()->tellg());
 | 
					      pi.setstatus((size_t)_trasfile->read_file()->tellg());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      codcms = curr.get(0);
 | 
					      codcms = curr.get(0);
 | 
				
			||||||
      codcms.replace('_', '/');
 | 
					      codcms.replace('_', '/');
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										183
									
								
								ps/ps1001300.cpp
									
									
									
									
									
								
							
							
						
						
									
										183
									
								
								ps/ps1001300.cpp
									
									
									
									
									
								
							@ -3,7 +3,6 @@
 | 
				
			|||||||
#include <config.h>
 | 
					#include <config.h>
 | 
				
			||||||
#include <defmask.h>
 | 
					#include <defmask.h>
 | 
				
			||||||
#include <progind.h>
 | 
					#include <progind.h>
 | 
				
			||||||
#include <recarray.h>
 | 
					 | 
				
			||||||
#include <textset.h>
 | 
					#include <textset.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "../ca/calib01.h"
 | 
					#include "../ca/calib01.h"
 | 
				
			||||||
@ -19,7 +18,7 @@
 | 
				
			|||||||
//  Metodi static di ordinamento
 | 
					//  Metodi static di ordinamento
 | 
				
			||||||
///////////////////////////////////
 | 
					///////////////////////////////////
 | 
				
			||||||
//ordina per numreg/numrig (long+int) oppure per numreg/datacomp/autofcomp/datafcomp
 | 
					//ordina per numreg/numrig (long+int) oppure per numreg/datacomp/autofcomp/datafcomp
 | 
				
			||||||
static int compare_by_numrig(TSheet_field & s, int r1, int r2)
 | 
					static int compare_by_numrig(TSheet_field& s, int r1, int r2)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TToken_string& s1 = s.row(r1);
 | 
					  TToken_string& s1 = s.row(r1);
 | 
				
			||||||
  TToken_string& s2 = s.row(r2);
 | 
					  TToken_string& s2 = s.row(r2);
 | 
				
			||||||
@ -29,7 +28,6 @@ static int compare_by_numrig(TSheet_field & s, int r1, int r2)
 | 
				
			|||||||
  const long b11 = s1.get_long(numreg_pos);
 | 
					  const long b11 = s1.get_long(numreg_pos);
 | 
				
			||||||
	const long b21 = s2.get_long(numreg_pos);
 | 
						const long b21 = s2.get_long(numreg_pos);
 | 
				
			||||||
	int cmp = b11 - b21;
 | 
						int cmp = b11 - b21;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
	if (cmp == 0)
 | 
						if (cmp == 0)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -102,6 +100,7 @@ class TVariazione_budget_mask : public TAutomask
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
					  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
				
			||||||
 | 
					  void set_status(bool edit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  int load();                             //(costruttore e on_field) carica i dati per riempire lo sheet
 | 
					  int load();                             //(costruttore e on_field) carica i dati per riempire lo sheet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -127,11 +126,11 @@ public:
 | 
				
			|||||||
  ~TVariazione_budget_mask();
 | 
					  ~TVariazione_budget_mask();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
TVariazione_budget_mask::TVariazione_budget_mask() :TAutomask ("ps1001300a")
 | 
					TVariazione_budget_mask::TVariazione_budget_mask() : TAutomask ("ps1001300a")
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  //carica la causale che trova nel ditta.ini
 | 
					  //carica la causale che trova nel ditta.ini
 | 
				
			||||||
  TConfig ditta_ini(CONFIG_DITTA, "ps1001");
 | 
					  TConfig ditta_ini(CONFIG_DITTA, "ps1001");
 | 
				
			||||||
  set(F_CODCAUS, ditta_ini.get("CodCaus"));
 | 
					  set(F_CODCAUS, ditta_ini.get("CodCaus"), 0x3);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //setta le posizioni dei campi dello sheet
 | 
					  //setta le posizioni dei campi dello sheet
 | 
				
			||||||
  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
@ -163,7 +162,7 @@ TVariazione_budget_mask::~TVariazione_budget_mask()
 | 
				
			|||||||
void TVariazione_budget_mask::build_key(int i, TToken_string& key)
 | 
					void TVariazione_budget_mask::build_key(int i, TToken_string& key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
  TToken_string curr_riga = sf_righe.row(i);
 | 
					  TToken_string& curr_riga = sf_righe.row(i);
 | 
				
			||||||
  //chiave della riga sorella originale
 | 
					  //chiave della riga sorella originale
 | 
				
			||||||
  key.cut(0);
 | 
					  key.cut(0);
 | 
				
			||||||
  key.add(curr_riga.get(_pos_cdc));
 | 
					  key.add(curr_riga.get(_pos_cdc));
 | 
				
			||||||
@ -175,7 +174,7 @@ void TVariazione_budget_mask::build_key(int i, TToken_string& key)
 | 
				
			|||||||
void TVariazione_budget_mask::build_key_by_numreg(int i, TToken_string& key)
 | 
					void TVariazione_budget_mask::build_key_by_numreg(int i, TToken_string& key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
  TToken_string curr_riga = sf_righe.row(i);
 | 
					  TToken_string& curr_riga = sf_righe.row(i);
 | 
				
			||||||
  //chiave della riga sorella originale
 | 
					  //chiave della riga sorella originale
 | 
				
			||||||
  key.cut(0);
 | 
					  key.cut(0);
 | 
				
			||||||
  key.add(curr_riga.get(_pos_numreg));
 | 
					  key.add(curr_riga.get(_pos_numreg));
 | 
				
			||||||
@ -202,33 +201,33 @@ int TVariazione_budget_mask::find_sister_rows(const int curr_sister, int& first_
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  TToken_string key_iesima;
 | 
					  TToken_string key_iesima;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 for (int i = curr_sister - 1; i >= 0; i--)
 | 
					  for (int i = curr_sister - 1; i >= 0; i--)
 | 
				
			||||||
 {
 | 
					  {
 | 
				
			||||||
  if (by_numreg)
 | 
					    if (by_numreg)
 | 
				
			||||||
    build_key_by_numreg(i, key_iesima);
 | 
					      build_key_by_numreg(i, key_iesima);
 | 
				
			||||||
  else
 | 
					    else
 | 
				
			||||||
    build_key(i, key_iesima);
 | 
					      build_key(i, key_iesima);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (key == key_iesima)
 | 
					    if (key == key_iesima)
 | 
				
			||||||
    first_sister = i;
 | 
					      first_sister = i;
 | 
				
			||||||
  else
 | 
					    else
 | 
				
			||||||
    break;
 | 
					      break;
 | 
				
			||||||
 }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
 const long items = sf_righe.items();
 | 
					  const long items = sf_righe.items();
 | 
				
			||||||
 for (int i = curr_sister + 1; i < items; i++)
 | 
					  for (int i = curr_sister + 1; i < items; i++)
 | 
				
			||||||
 {
 | 
					  {
 | 
				
			||||||
  if (by_numreg)
 | 
					    if (by_numreg)
 | 
				
			||||||
    build_key_by_numreg(i, key_iesima);
 | 
					      build_key_by_numreg(i, key_iesima);
 | 
				
			||||||
  else
 | 
					    else
 | 
				
			||||||
    build_key(i, key_iesima);
 | 
					      build_key(i, key_iesima);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (key == key_iesima)
 | 
					    if (key == key_iesima)
 | 
				
			||||||
    last_sister = i;
 | 
					      last_sister = i;
 | 
				
			||||||
  else
 | 
					    else
 | 
				
			||||||
    break;
 | 
					      break;
 | 
				
			||||||
 }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return last_sister - first_sister + 1;
 | 
					  return last_sister - first_sister + 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -237,30 +236,49 @@ int TVariazione_budget_mask::find_sister_rows(const int curr_sister, int& first_
 | 
				
			|||||||
void TVariazione_budget_mask::sistema_date_cms(TDate& datainicms, TDate& datafinecms)
 | 
					void TVariazione_budget_mask::sistema_date_cms(TDate& datainicms, TDate& datafinecms)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  datainicms = get_date(F_DATAINICMS);
 | 
					  datainicms = get_date(F_DATAINICMS);
 | 
				
			||||||
  datafinecms = get_date(F_DATAPRORCMS);
 | 
					  const bool pro = get_bool(F_PROROGATA);
 | 
				
			||||||
  if (!datafinecms.ok())
 | 
					  if (pro)
 | 
				
			||||||
 | 
					    datafinecms = get_date(F_DATAPRORCMS);
 | 
				
			||||||
 | 
					  if (!pro || !datafinecms.ok())
 | 
				
			||||||
    datafinecms = get_date(F_DATAFINECMS);
 | 
					    datafinecms = get_date(F_DATAFINECMS);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TVariazione_budget_mask::set_status(bool edit)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  enable(-3, edit);
 | 
				
			||||||
 | 
					  enable(DLG_CANCEL, edit);
 | 
				
			||||||
 | 
					  enable(DLG_QUIT, !edit);
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  enable(F_CODCMS, !edit);
 | 
				
			||||||
 | 
					  enable(F_DESCRIZ, !edit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  xvtil_statbar_set(edit ? TR("Modifica") : TR("Selezione"));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
					bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
	switch (o.dlg())
 | 
						switch (o.dlg())
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
    //maschera
 | 
					    //maschera
 | 
				
			||||||
  case F_CODCMS:
 | 
					  case F_CODCMS:
 | 
				
			||||||
      if (e == fe_modify)
 | 
					    if (e == fe_init)
 | 
				
			||||||
      {
 | 
					      set_status(false);
 | 
				
			||||||
        bool e = load() == 0;
 | 
					    if (e == fe_modify)
 | 
				
			||||||
        o.enable(e);
 | 
					      set_status(!o.empty() && load() > 0);
 | 
				
			||||||
        enable(F_DESCRIZ, e);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case F_DATAINICMS:
 | 
					  case F_DATAINICMS:
 | 
				
			||||||
  case F_DATAFINECMS:
 | 
					  case F_DATAFINECMS:
 | 
				
			||||||
    _dirty = true;
 | 
					    _dirty = true;
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
 | 
					  //sheet
 | 
				
			||||||
    //sheet
 | 
					  case F_RIGHE:
 | 
				
			||||||
 | 
					    switch (e)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					    case se_query_add: return field(DLG_CANCEL).enabled();
 | 
				
			||||||
 | 
					    case se_query_del: return false;
 | 
				
			||||||
 | 
					    default: break;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    break;
 | 
				
			||||||
  case S_CHECK:
 | 
					  case S_CHECK:
 | 
				
			||||||
    if (e == fe_modify)
 | 
					    if (e == fe_modify)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -282,13 +300,12 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
      const TDate datacomp = o.get();
 | 
					      const TDate datacomp = o.get();
 | 
				
			||||||
      if (datacomp < datainicms || (datafinecms.ok() && datacomp > datafinecms))
 | 
					      if (datacomp < datainicms || (datafinecms.ok() && datacomp > datafinecms))
 | 
				
			||||||
        return error_box("La data competenza deve rientrare nella durata della commessa!");
 | 
					        return error_box("La data competenza deve rientrare nella durata della commessa!");
 | 
				
			||||||
 | 
					      _dirty = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    _dirty = true;
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case S_DATAFCOMP:
 | 
					  case S_DATAFCOMP:
 | 
				
			||||||
    if (e == fe_modify)
 | 
					    if (e == fe_modify)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					 | 
				
			||||||
      const TDate datafcomp = o.get();
 | 
					      const TDate datafcomp = o.get();
 | 
				
			||||||
      if (datafcomp.ok())
 | 
					      if (datafcomp.ok())
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
@ -313,7 +330,6 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
      _dirty = true;
 | 
					      _dirty = true;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
 | 
					 | 
				
			||||||
  case S_SO:
 | 
					  case S_SO:
 | 
				
			||||||
    if (e == fe_init)
 | 
					    if (e == fe_init)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@ -354,24 +370,20 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
  case DLG_CANCEL:
 | 
					  case DLG_CANCEL:
 | 
				
			||||||
    if (e == fe_button && jolly == 0) //jolly serve per specificare che è il DLG_CANCEL della maschera principale
 | 
					    if (e == fe_button && jolly == 0) //jolly serve per specificare che è il DLG_CANCEL della maschera principale
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      if (_dirty)
 | 
					      if (_dirty && yesno_box("Salvare le modifiche effettuate?"))
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        if (yesno_box("Salvare le modifiche effettuate?"))
 | 
					        //attenzione! se la save non riesce si deve fermare senza resettare le modifiche!
 | 
				
			||||||
          if (!save())    //attenzione! se la save non riesce si deve fermare senza resettare le modifiche!
 | 
					        if (!check_fields() || !save())
 | 
				
			||||||
            return false;
 | 
					          return false;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      enable(F_CODCMS);
 | 
					 | 
				
			||||||
      enable(F_DESCRIZ);
 | 
					 | 
				
			||||||
      sfield(F_RIGHE).destroy();
 | 
					      sfield(F_RIGHE).destroy();
 | 
				
			||||||
 | 
					      set_status(false);
 | 
				
			||||||
      return false;
 | 
					      return false;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case DLG_CHECKALL:
 | 
					  case DLG_CHECKALL:
 | 
				
			||||||
    if (e == fe_button)
 | 
					    if (e == fe_button)
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      check_all(!one_checked());
 | 
					      check_all(!one_checked());
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case DLG_TODATAINI:
 | 
					  case DLG_TODATAINI:
 | 
				
			||||||
    if (e == fe_button)
 | 
					    if (e == fe_button)
 | 
				
			||||||
@ -380,7 +392,7 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
      TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					      TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
      FOR_EACH_SHEET_ROW(sf_righe, i, riga) if (riga->get_char(0) > ' ')  //solo le righe checked!!
 | 
					      FOR_EACH_SHEET_ROW(sf_righe, i, riga) if (riga->get_char(0) > ' ')  //solo le righe checked!!
 | 
				
			||||||
        riga->add(datainicms, _pos_datacomp);
 | 
					        riga->add(datainicms, _pos_datacomp);
 | 
				
			||||||
 | 
					      _dirty = true;
 | 
				
			||||||
      sf_righe.force_update();
 | 
					      sf_righe.force_update();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
@ -393,7 +405,7 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
      TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					      TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
      FOR_EACH_SHEET_ROW(sf_righe, i, riga) if (riga->get_char(0) > ' ')  //solo le righe checked!!
 | 
					      FOR_EACH_SHEET_ROW(sf_righe, i, riga) if (riga->get_char(0) > ' ')  //solo le righe checked!!
 | 
				
			||||||
        riga->add(datafinecms, _pos_datafcomp);
 | 
					        riga->add(datafinecms, _pos_datafcomp);
 | 
				
			||||||
 | 
					      _dirty = true;
 | 
				
			||||||
      sf_righe.force_update();
 | 
					      sf_righe.force_update();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
@ -456,16 +468,13 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e,
 | 
				
			|||||||
        //al termine deve aggiornare la colonna con i preventivi
 | 
					        //al termine deve aggiornare la colonna con i preventivi
 | 
				
			||||||
        aggiorna_saldi_preventivi(sf_righe, i);
 | 
					        aggiorna_saldi_preventivi(sf_righe, i);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					 | 
				
			||||||
      sf_righe.force_update();
 | 
					 | 
				
			||||||
      _dirty = true;
 | 
					      _dirty = true;
 | 
				
			||||||
 | 
					      sf_righe.force_update();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case DLG_SAVEREC:
 | 
					  case DLG_SAVEREC:
 | 
				
			||||||
    if (e == fe_button && check_fields())
 | 
					    if (e == fe_button && check_fields())
 | 
				
			||||||
    {
 | 
					      save();
 | 
				
			||||||
      const bool saved = save();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  default:
 | 
					  default:
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
@ -484,10 +493,10 @@ bool TVariazione_budget_mask::save_commessa()
 | 
				
			|||||||
  int err = commesse.read(_isequal, _lock);
 | 
					  int err = commesse.read(_isequal, _lock);
 | 
				
			||||||
  if (err == NOERR)
 | 
					  if (err == NOERR)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    commesse.put(COMMESSE_DATAINIZIO, get_date(F_DATAINICMS));
 | 
					    commesse.put(COMMESSE_DATAINIZIO, get(F_DATAINICMS));
 | 
				
			||||||
    commesse.put(COMMESSE_DATAFINE, get_date(F_DATAFINECMS));
 | 
					    commesse.put(COMMESSE_DATAFINE,   get(F_DATAFINECMS));
 | 
				
			||||||
    commesse.put(COMMESSE_PROROGA, get_bool(F_PROROGATA));
 | 
					    commesse.put(COMMESSE_PROROGA,    get_bool(F_PROROGATA));
 | 
				
			||||||
    commesse.put(COMMESSE_DATAPROR, get_date(F_DATAPRORCMS));
 | 
					    commesse.put(COMMESSE_DATAPROR,   get(F_DATAPRORCMS));
 | 
				
			||||||
    //solo la rewrite perchè la commessa ovviamente esiste già
 | 
					    //solo la rewrite perchè la commessa ovviamente esiste già
 | 
				
			||||||
    err = commesse.rewrite();
 | 
					    err = commesse.rewrite();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -658,10 +667,8 @@ bool TVariazione_budget_mask::save_sheet()
 | 
				
			|||||||
  FOR_EACH_SHEET_ROW(sf_righe, r, riga)
 | 
					  FOR_EACH_SHEET_ROW(sf_righe, r, riga)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    const long numreg = sf_righe.row(r).get_long(_pos_numreg);
 | 
					    const long numreg = sf_righe.row(r).get_long(_pos_numreg);
 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    if (numreg > 0)
 | 
					    if (numreg > 0)
 | 
				
			||||||
      r = modifica_movana(numreg, sf_righe, r);
 | 
					      r = modifica_movana(numreg, sf_righe, r);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } //FOR_EACH_SHEET_ROW(...
 | 
					  } //FOR_EACH_SHEET_ROW(...
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  //riordina lo sheet per chiave numreg; in questo modo le righe senza numreg vanno all'inizio e vengono..
 | 
					  //riordina lo sheet per chiave numreg; in questo modo le righe senza numreg vanno all'inizio e vengono..
 | 
				
			||||||
@ -679,11 +686,10 @@ bool TVariazione_budget_mask::save_sheet()
 | 
				
			|||||||
      break;
 | 
					      break;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    n = crea_movana(sf_righe, n);
 | 
					    n = crea_movana(sf_righe, n);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  } //FOR_EACH_SHEET_ROW(sf_righe,n...
 | 
					  } //FOR_EACH_SHEET_ROW(sf_righe,n...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //le righe vanno rimesse in ordine di chiave cdc/fase/conto
 | 
					  //le righe vanno rimesse in ordine di chiave cdc/fase/conto
 | 
				
			||||||
  load();
 | 
					  set_status(load() > 0);
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -705,7 +711,6 @@ bool TVariazione_budget_mask::save()
 | 
				
			|||||||
bool TVariazione_budget_mask::one_checked() const
 | 
					bool TVariazione_budget_mask::one_checked() const
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
 | 
					 | 
				
			||||||
  FOR_EACH_SHEET_ROW(sf_righe, i, riga)
 | 
					  FOR_EACH_SHEET_ROW(sf_righe, i, riga)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (riga->get_char(0) > ' ')
 | 
					    if (riga->get_char(0) > ' ')
 | 
				
			||||||
@ -762,11 +767,11 @@ int TVariazione_budget_mask::load()
 | 
				
			|||||||
  query << "TO CODCMS=#CODCMS\n";
 | 
					  query << "TO CODCMS=#CODCMS\n";
 | 
				
			||||||
  //instanzio un TISAM_recordset sulle rmovana
 | 
					  //instanzio un TISAM_recordset sulle rmovana
 | 
				
			||||||
  TISAM_recordset rmovana(query);
 | 
					  TISAM_recordset rmovana(query);
 | 
				
			||||||
  const TString cms = get(F_CODCMS);
 | 
					  const TString& cms = get(F_CODCMS);
 | 
				
			||||||
  rmovana.set_var("#CODCMS", cms);
 | 
					  rmovana.set_var("#CODCMS", cms);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const long rmovana_items = rmovana.items();
 | 
					  const long rmovana_items = rmovana.items();
 | 
				
			||||||
  TProgind pi(rmovana_items, "Generazione righe in corso...", true, true);
 | 
					  TProgind pi(rmovana_items, TR("Caricamento righe..."), true, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  //recupero sheet e realtiva mashera di riga
 | 
					  //recupero sheet e realtiva mashera di riga
 | 
				
			||||||
  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
					  TSheet_field& sf_righe = sfield(F_RIGHE);
 | 
				
			||||||
@ -842,10 +847,8 @@ int TVariazione_budget_mask::load()
 | 
				
			|||||||
  {
 | 
					  {
 | 
				
			||||||
    //solo le righe a saldo preventivo nullo vanno considerate
 | 
					    //solo le righe a saldo preventivo nullo vanno considerate
 | 
				
			||||||
    const TString& str_saldo_prev = riga->get(_pos_prev);
 | 
					    const TString& str_saldo_prev = riga->get(_pos_prev);
 | 
				
			||||||
    if (str_saldo_prev == "")
 | 
					    if (str_saldo_prev.blank())
 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      aggiorna_saldi_preventivi(sf_righe, i);
 | 
					      aggiorna_saldi_preventivi(sf_righe, i);
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  //e poi aggiorna il video!
 | 
					  //e poi aggiorna il video!
 | 
				
			||||||
@ -862,38 +865,16 @@ int TVariazione_budget_mask::load()
 | 
				
			|||||||
///////////////////////////////////////
 | 
					///////////////////////////////////////
 | 
				
			||||||
class TVariazione_budget : public TSkeleton_application
 | 
					class TVariazione_budget : public TSkeleton_application
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	virtual bool check_autorization() const { return false; }
 | 
					 | 
				
			||||||
  virtual const char * extra_modules() const { return "ca"; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	TVariazione_budget_mask* _msk;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
 | 
						virtual bool check_autorization() const { return false; }
 | 
				
			||||||
public:           
 | 
					  virtual const char* extra_modules() const { return "ca"; }
 | 
				
			||||||
  virtual bool create();
 | 
					 | 
				
			||||||
  virtual bool destroy();
 | 
					 | 
				
			||||||
  virtual void main_loop();
 | 
					  virtual void main_loop();
 | 
				
			||||||
 
 | 
					 | 
				
			||||||
  TVariazione_budget() {};
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TVariazione_budget::create()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  _msk = new TVariazione_budget_mask();
 | 
					 | 
				
			||||||
  return TSkeleton_application::create();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool TVariazione_budget::destroy()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	delete _msk;
 | 
					 | 
				
			||||||
  return TApplication::destroy();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void TVariazione_budget::main_loop()
 | 
					void TVariazione_budget::main_loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  KEY	tasto;
 | 
					  TVariazione_budget_mask msk;
 | 
				
			||||||
	tasto = _msk->run();
 | 
					  msk.run();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int ps1001300 (int argc, char* argv[])
 | 
					int ps1001300 (int argc, char* argv[])
 | 
				
			||||||
@ -901,4 +882,4 @@ int ps1001300 (int argc, char* argv[])
 | 
				
			|||||||
  TVariazione_budget main_app;
 | 
					  TVariazione_budget main_app;
 | 
				
			||||||
  main_app.run(argc, argv, TR("Gestione budget per commessa"));
 | 
					  main_app.run(argc, argv, TR("Gestione budget per commessa"));
 | 
				
			||||||
  return true;
 | 
					  return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@ BUTTON DLG_SAVEREC 2 2
 | 
				
			|||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 1 "~Salva"
 | 
					  PROMPT 1 1 "~Salva"
 | 
				
			||||||
  PICTURE TOOL_SAVEREC
 | 
					  PICTURE TOOL_SAVEREC
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BUTTON DLG_NULL 4 2
 | 
					BUTTON DLG_NULL 4 2
 | 
				
			||||||
@ -18,6 +19,7 @@ BUTTON DLG_CHECKALL 2 2
 | 
				
			|||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 3 1 "~Tutti"
 | 
					  PROMPT 3 1 "~Tutti"
 | 
				
			||||||
  PICTURE TOOL_MULTISEL
 | 
					  PICTURE TOOL_MULTISEL
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BUTTON DLG_NULL
 | 
					BUTTON DLG_NULL
 | 
				
			||||||
@ -30,24 +32,21 @@ BUTTON DLG_TODATAINI
 | 
				
			|||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 5 1 "All.~Ini"
 | 
					  PROMPT 5 1 "All.~Ini"
 | 
				
			||||||
  PICTURE TOOL_TODATAINI
 | 
					  PICTURE TOOL_TODATAINI
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BUTTON DLG_TODATAFIN
 | 
					BUTTON DLG_TODATAFIN
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 6 1 "All.~Fin"
 | 
					  PROMPT 6 1 "All.~Fin"
 | 
				
			||||||
  PICTURE TOOL_TODATAFIN
 | 
					  PICTURE TOOL_TODATAFIN
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BUTTON DLG_TOMATURATO
 | 
					BUTTON DLG_TOMATURATO
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 7 1 "All.~Mat"
 | 
					  PROMPT 7 1 "All.~Mat"
 | 
				
			||||||
  PICTURE TOOL_TOCALC
 | 
					  PICTURE TOOL_TOCALC
 | 
				
			||||||
END
 | 
					  GROUP 3
 | 
				
			||||||
 | 
					 | 
				
			||||||
BUTTON DLG_NULL
 | 
					 | 
				
			||||||
BEGIN
 | 
					 | 
				
			||||||
  PROMPT 8 1 ""
 | 
					 | 
				
			||||||
  PICTURE 0
 | 
					 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <cancelbar.h>
 | 
					#include <cancelbar.h>
 | 
				
			||||||
@ -91,24 +90,28 @@ END
 | 
				
			|||||||
DATE F_DATAINICMS
 | 
					DATE F_DATAINICMS
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 2 "Inizio "
 | 
					  PROMPT 1 2 "Inizio "
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DATE F_DATAFINECMS
 | 
					DATE F_DATAFINECMS
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 22 2 "Fine "
 | 
					  PROMPT 22 2 "Fine "
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
BOOL F_PROROGATA
 | 
					BOOL F_PROROGATA
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 43 2 "Prorogata"
 | 
					  PROMPT 43 2 "Prorogata"
 | 
				
			||||||
  MESSAGE FALSE CLEAR,F_DATAPRORCMS
 | 
					  MESSAGE FALSE HIDE,F_DATAPRORCMS
 | 
				
			||||||
  MESSAGE TRUE ENABLE,F_DATAPRORCMS
 | 
					  MESSAGE TRUE SHOW,F_DATAPRORCMS
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DATE F_DATAPRORCMS
 | 
					DATE F_DATAPRORCMS
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 57 2 "Proroga "
 | 
					  PROMPT 57 2 "Proroga "
 | 
				
			||||||
  CHECKTYPE REQUIRED
 | 
					  CHECKTYPE REQUIRED
 | 
				
			||||||
 | 
					  GROUP 3
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GROUPBOX DLG_NULL 78 3
 | 
					GROUPBOX DLG_NULL 78 3
 | 
				
			||||||
@ -126,7 +129,7 @@ END
 | 
				
			|||||||
STRINGA F_CODCAUS 3
 | 
					STRINGA F_CODCAUS 3
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 24 5 "Causale "
 | 
					  PROMPT 24 5 "Causale "
 | 
				
			||||||
  USE LF_CAUSALI SELECT MOVIND!=''
 | 
					  USE LF_CAUSALI SELECT MOVIND!=""
 | 
				
			||||||
  INPUT CODCAUS F_CODCAUS
 | 
					  INPUT CODCAUS F_CODCAUS
 | 
				
			||||||
  DISPLAY "Codice" CODCAUS
 | 
					  DISPLAY "Codice" CODCAUS
 | 
				
			||||||
  DISPLAY "Descrizione@50" DESCR
 | 
					  DISPLAY "Descrizione@50" DESCR
 | 
				
			||||||
@ -147,9 +150,9 @@ BEGIN
 | 
				
			|||||||
  CHECKTYPE REQUIRED
 | 
					  CHECKTYPE REQUIRED
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 0 7 "@bRighe movimenti di budget"
 | 
					  PROMPT -11 7 "@bRighe movimenti di budget"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPREADSHEET F_RIGHE
 | 
					SPREADSHEET F_RIGHE
 | 
				
			||||||
@ -177,52 +180,52 @@ ENDPAGE
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
PAGE "Istruzioni " 0 2 0 0
 | 
					PAGE "Istruzioni " 0 2 0 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 1 "_ Le date della commessa possono essere modificate." 
 | 
					  PROMPT 1 1 "_ Le date della commessa possono essere modificate." 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 2 "_ I pulsanti All.Ini, All.Fin, All.Mat hanno effetto solo sulle righe il cui primo campo è spuntato" 
 | 
					  PROMPT 1 2 "_ I pulsanti All.Ini, All.Fin, All.Mat hanno effetto solo sulle righe il cui primo campo è spuntato" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 3 "_ All.Ini (Allinea all'Inizio) allinea le date di competenza alla data inizio commessa" 
 | 
					  PROMPT 1 3 "_ All.Ini (Allinea all'Inizio) allinea le date di competenza alla data inizio commessa" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 4 "_ All.Fin (Allinea alla Fine) allinea le date di fine competenza alla data fine commessa" 
 | 
					  PROMPT 1 4 "_ All.Fin (Allinea alla Fine) allinea le date di fine competenza alla data fine commessa" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 5 "_ All.Mat (Allinea al Maturato) modifica gli importi in modo da portare il Preventivo al valore del Maturato" 
 | 
					  PROMPT 1 5 "_ All.Mat (Allinea al Maturato) modifica gli importi in modo da portare il Preventivo al valore del Maturato" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 6 "_ E' possibile modificare manualmente gli importi sulle righe, il Preventivo viene ricalcolato di conseguenza" 
 | 
					  PROMPT 1 6 "_ E' possibile modificare manualmente gli importi sulle righe, il Preventivo viene ricalcolato di conseguenza" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 7 "_ In fase di registrazione vengono eliminate le righe ad importo nullo (azzerare quindi l'importo se si"
 | 
					  PROMPT 1 7 "_ In fase di registrazione vengono eliminate le righe ad importo nullo (azzerare quindi l'importo se si"
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 8 "  desidera rimuovere una riga)." 
 | 
					  PROMPT 1 8 "  desidera rimuovere una riga)." 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 9 "_ In fase di registrazione le nuove righe vengono assegnate a nuovi movimenti analitici preventivi" 
 | 
					  PROMPT 1 9 "_ In fase di registrazione le nuove righe vengono assegnate a nuovi movimenti analitici preventivi" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT -1
 | 
					TEXT DLG_NULL
 | 
				
			||||||
BEGIN
 | 
					BEGIN
 | 
				
			||||||
  PROMPT 1 10 "_ Il pulsante Tutti spunta le righe, una per ogni chiave Sede/Fase/Conto" 
 | 
					  PROMPT 1 10 "_ Il pulsante Tutti spunta le righe, una per ogni chiave Sede/Fase/Conto" 
 | 
				
			||||||
END
 | 
					END
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user