Aggiunto strumento per controllare e correggere IBAN su documenti
git-svn-id: svn://10.65.10.50/branches/R_10_00@22867 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									6de44e6502
								
							
						
					
					
						commit
						f3d54d4fe9
					
				@ -1,7 +1,5 @@
 | 
			
		||||
#include <xvt.h>
 | 
			
		||||
 | 
			
		||||
#include <checks.h>
 | 
			
		||||
 | 
			
		||||
#include "ve4.h"
 | 
			
		||||
 | 
			
		||||
int main(int argc, char** argv)
 | 
			
		||||
@ -10,6 +8,7 @@ int main(int argc, char** argv)
 | 
			
		||||
  switch(k)
 | 
			
		||||
  { 
 | 
			
		||||
  case  1: ve4200(argc, argv); break; // Aggiorna IVA
 | 
			
		||||
  case  2: ve4300(argc, argv); break; // Correzione IBAN
 | 
			
		||||
  default: ve4100(argc, argv); break; // Modifica Valori
 | 
			
		||||
  }
 | 
			
		||||
  return 0;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1
									
								
								ve/ve4.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								ve/ve4.h
									
									
									
									
									
								
							@ -1,2 +1,3 @@
 | 
			
		||||
int ve4100(int argc, char* argv[]);
 | 
			
		||||
int ve4200(int argc, char* argv[]);
 | 
			
		||||
int ve4300(int argc, char* argv[]);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										200
									
								
								ve/ve4300.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								ve/ve4300.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,200 @@
 | 
			
		||||
#include <applicat.h>
 | 
			
		||||
#include <automask.h>
 | 
			
		||||
#include <progind.h>
 | 
			
		||||
#include <recarray.h>
 | 
			
		||||
#include <recset.h>
 | 
			
		||||
#include <relation.h>
 | 
			
		||||
#include <reputils.h>
 | 
			
		||||
#include <validate.h>
 | 
			
		||||
 | 
			
		||||
#include "ve4.h"
 | 
			
		||||
#include "ve4300a.h"
 | 
			
		||||
 | 
			
		||||
#include "../cg/cfban.h"
 | 
			
		||||
#include <clifo.h>
 | 
			
		||||
#include <doc.h>
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TAggiornaIBAN_msk
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TAggiornaIBAN_msk : public TAutomask
 | 
			
		||||
{
 | 
			
		||||
  TAssoc_array _iban;
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
			
		||||
  const TString& get_iban(const TRectype& doc, TLog_report& log);
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
  bool elabora();
 | 
			
		||||
  TAggiornaIBAN_msk() : TAutomask("ve4300a") {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const TString& TAggiornaIBAN_msk::get_iban(const TRectype& doc, TLog_report& log) 
 | 
			
		||||
{
 | 
			
		||||
  TToken_string key;
 | 
			
		||||
	key = doc.get(DOC_TIPOCF);
 | 
			
		||||
	key.add(doc.get(DOC_CODCF));
 | 
			
		||||
  
 | 
			
		||||
  TString* iban = (TString*)_iban.objptr(key);
 | 
			
		||||
  if (iban != NULL)
 | 
			
		||||
    return *iban;
 | 
			
		||||
  iban = new TString80;
 | 
			
		||||
  _iban.add(key, iban);
 | 
			
		||||
  
 | 
			
		||||
  const TRectype& clifo = cache().get(LF_CLIFO, key);
 | 
			
		||||
	key.add("V");
 | 
			
		||||
	key.add("1");
 | 
			
		||||
	const TRectype& cfban = cache().get(LF_CFBAN, key);
 | 
			
		||||
 | 
			
		||||
  *iban = cfban.get(CFBAN_IBAN);
 | 
			
		||||
  if (iban->blank())
 | 
			
		||||
  {
 | 
			
		||||
    *iban = clifo.get(CLI_IBAN);
 | 
			
		||||
    if (iban->blank())
 | 
			
		||||
    {
 | 
			
		||||
      TString msg;
 | 
			
		||||
      msg << "Impossibile trovare un IBAN per " << clifo.get(CLI_RAGSOC);
 | 
			
		||||
      log.log(2, msg);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return *iban;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TAggiornaIBAN_msk::elabora() 
 | 
			
		||||
{
 | 
			
		||||
  const bool definitiva = get_bool(F_DEFINITIVA);
 | 
			
		||||
 | 
			
		||||
  TLog_report log;
 | 
			
		||||
 | 
			
		||||
  TFast_isamfile docs(LF_DOC);
 | 
			
		||||
  TString query;
 | 
			
		||||
  query << "USE DOC SELECT BETWEEN(DATADOC,#DAL,#AL)&&BETWEEN(STATO,#STATO,#STATO)\n"
 | 
			
		||||
        << "FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM\n"
 | 
			
		||||
        << "TO   PROVV=D ANNO=#ANNO CODNUM=#CODNUM";
 | 
			
		||||
 | 
			
		||||
  const TDate dal = get(F_DAL);
 | 
			
		||||
  const TDate al = get(F_AL);
 | 
			
		||||
  TISAM_recordset recset(query);
 | 
			
		||||
  recset.set_var("#DAL", dal);
 | 
			
		||||
  recset.set_var("#AL", al);
 | 
			
		||||
  recset.set_var("#STATO", get(F_STATO));
 | 
			
		||||
  recset.set_var("#ANNO", long(dal.year()));
 | 
			
		||||
  recset.set_var("#CODNUM", get(F_CODNUM));
 | 
			
		||||
 | 
			
		||||
  const TRecnotype n = recset.items();
 | 
			
		||||
 | 
			
		||||
  if (n > 0 && definitiva && !yesno_box("Confermare l'elaborazione di %ld documenti", n))
 | 
			
		||||
    return false;
 | 
			
		||||
 | 
			
		||||
  if (n > 0)
 | 
			
		||||
  {
 | 
			
		||||
    TProgind pi(n, main_app().title());
 | 
			
		||||
    TRectype& doc = recset.cursor()->curr();
 | 
			
		||||
 | 
			
		||||
    TString msg, ibaner;
 | 
			
		||||
    TToken_string key;
 | 
			
		||||
 | 
			
		||||
    for (bool ok = recset.move_first(); ok; ok = recset.move_next())
 | 
			
		||||
    {
 | 
			
		||||
#ifdef DBG
 | 
			
		||||
      const long ndoc = doc.get_long(DOC_NDOC);
 | 
			
		||||
      if (ndoc == 82)
 | 
			
		||||
        int cazzone = 1;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
      const TString8 abi = doc.get(DOC_CODABIA);
 | 
			
		||||
      const TString8 cab = doc.get(DOC_CODCABA);
 | 
			
		||||
      const TString80 iban = doc.get(DOC_IBAN);
 | 
			
		||||
      if (abi.blank() && cab.blank() && iban.blank())
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      int err = iban_check(iban, ibaner);
 | 
			
		||||
      if (err == 0 && iban.starts_with("IT") && iban.mid(5, 5) == abi && iban.mid(10, 5) == cab)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
		  key = doc.get(DOC_TIPOCF);
 | 
			
		||||
		  key.add(doc.get(DOC_CODCF));
 | 
			
		||||
      const TRectype& clifo = cache().get(LF_CLIFO, key);
 | 
			
		||||
 | 
			
		||||
      msg.cut(0) << doc.get(DOC_ANNO) << '/' << doc.get(DOC_CODNUM) << '/' << doc.get(DOC_NDOC)
 | 
			
		||||
                 << ' ' << clifo.get(CLI_RAGSOC);
 | 
			
		||||
      log.log(1, msg);
 | 
			
		||||
 | 
			
		||||
      if (err != NOERR && iban.full())
 | 
			
		||||
      {
 | 
			
		||||
        msg.cut(0) << '"' << iban << '"' << ' ' << ibaner;
 | 
			
		||||
        log.log(2, msg);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      const TString& newiban = get_iban(doc, log);
 | 
			
		||||
      if (newiban == iban)
 | 
			
		||||
        continue;
 | 
			
		||||
 | 
			
		||||
      doc.put(DOC_IBAN, newiban);
 | 
			
		||||
      if (iban.starts_with("IT"))
 | 
			
		||||
      {
 | 
			
		||||
        doc.put(DOC_CODABIA, newiban.mid( 5,5));
 | 
			
		||||
        doc.put(DOC_CODCABA, newiban.mid(10,5));
 | 
			
		||||
      }
 | 
			
		||||
      msg.cut(0) << '"' << iban << '"' << " -> " << '"' << newiban << '"';
 | 
			
		||||
      log.log(0, msg);
 | 
			
		||||
 | 
			
		||||
      if (definitiva)
 | 
			
		||||
      {
 | 
			
		||||
        err = doc.rewrite(docs);
 | 
			
		||||
        if (err != NOERR)
 | 
			
		||||
          log.log(2, TR("Impossibile aggiornare il documento"));
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  log.preview();
 | 
			
		||||
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TAggiornaIBAN_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
			
		||||
{
 | 
			
		||||
  switch (o.dlg())
 | 
			
		||||
  {
 | 
			
		||||
  case F_AL:
 | 
			
		||||
    if (e == fe_modify || e == fe_close)
 | 
			
		||||
    {
 | 
			
		||||
      const TDate dal = get(F_DAL);
 | 
			
		||||
      const TDate al = get(F_AL);
 | 
			
		||||
      if (!dal.ok() || !al.ok() || dal.year() != al.year() || dal > al)
 | 
			
		||||
        return error_box("Le date devono essere valide ed appartenere allo stesso anno");
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  default: break;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
// TAggiornaIBAN_app
 | 
			
		||||
///////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
class TAggiornaIBAN_app : public TSkeleton_application
 | 
			
		||||
{
 | 
			
		||||
protected:
 | 
			
		||||
  virtual void main_loop();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void TAggiornaIBAN_app::main_loop()
 | 
			
		||||
{
 | 
			
		||||
  TAggiornaIBAN_msk m;
 | 
			
		||||
  while (m.run() == K_ENTER)
 | 
			
		||||
    m.elabora();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int ve4300(int argc, char* argv[])
 | 
			
		||||
{              
 | 
			
		||||
  TAggiornaIBAN_app r;
 | 
			
		||||
  r.run(argc, argv, TR("Aggiornamento IBAN"));
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								ve/ve4300a.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								ve/ve4300a.h
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
#define F_DAL        101
 | 
			
		||||
#define F_AL         102
 | 
			
		||||
#define F_CODNUM     103
 | 
			
		||||
#define F_STATO      104
 | 
			
		||||
#define F_DEFINITIVA 105
 | 
			
		||||
							
								
								
									
										55
									
								
								ve/ve4300a.uml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								ve/ve4300a.uml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,55 @@
 | 
			
		||||
#include "ve4300a.h"
 | 
			
		||||
 | 
			
		||||
PAGE "Aggiornamento IBAN" -1 -1 35 6
 | 
			
		||||
 | 
			
		||||
STRING F_CODNUM 4
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 1 "Numerazione    "
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  USE %NUM
 | 
			
		||||
  INPUT CODTAB F_CODNUM
 | 
			
		||||
  DISPLAY "Codice" CODTAB
 | 
			
		||||
  DISPLAY "Descrizione@60" S0
 | 
			
		||||
  OUTPUT F_CODNUM CODTAB
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
DATE F_DAL 
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 2 "Intervallo dal "
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
DATE F_AL 
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 13 3 "al "
 | 
			
		||||
  FLAGS "A"
 | 
			
		||||
  CHECKTYPE REQUIRED
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
STRING F_STATO 1
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 4 "Stato          "
 | 
			
		||||
  FLAGS "U"
 | 
			
		||||
  USE %STD
 | 
			
		||||
  INPUT CODTAB F_STATO
 | 
			
		||||
  DISPLAY "Codice" CODTAB
 | 
			
		||||
  DISPLAY "Descrizione@60" S0
 | 
			
		||||
  OUTPUT F_STATO CODTAB
 | 
			
		||||
  CHECKTYPE NORMAL
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
BOOLEAN F_DEFINITIVA
 | 
			
		||||
BEGIN
 | 
			
		||||
  PROMPT 1 5 "Elaborazioe definitiva"
 | 
			
		||||
END
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
TOOLBAR "" 0 0 0 2
 | 
			
		||||
 | 
			
		||||
#include <elabar.h>
 | 
			
		||||
 | 
			
		||||
ENDPAGE
 | 
			
		||||
 | 
			
		||||
ENDMASK
 | 
			
		||||
@ -67,7 +67,10 @@ bool TListaRitFisc::crea_righe(const TListaRitFisc_mask& m) const
 | 
			
		||||
 | 
			
		||||
	int err=NOERR;
 | 
			
		||||
	TLocalisamfile righe(LF_RIGHEF24);
 | 
			
		||||
	TDocument_recordset rdoc("USE RDOC\nSELECT (TIPORIGA=='04')&&(110@->S10!='')&&(33.NDOC>=#DANUM)&&(33.NDOC<=#ANUM)\nJOIN SPP ALIAS 110 INTO CODTAB=CODART\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC\nFROM CODNUM=#NUM\nTO CODNUM=#NUM");
 | 
			
		||||
	TDocument_recordset rdoc("USE RDOC\nSELECT (TIPORIGA=='04')&&(110@->S10!='')&&(33.NDOC>=#DANUM)&&(33.NDOC<=#ANUM)\n"
 | 
			
		||||
                           "JOIN SPP ALIAS 110 INTO CODTAB=CODART\n"
 | 
			
		||||
                           "JOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM=CODNUM NDOC=NDOC\n"
 | 
			
		||||
                           "FROM CODNUM=#NUM\nTO CODNUM=#NUM");
 | 
			
		||||
	TVariant var;
 | 
			
		||||
	var = m.get(F_NUMINI);
 | 
			
		||||
	rdoc.set_var("#DANUM", var);
 | 
			
		||||
@ -81,7 +84,8 @@ bool TListaRitFisc::crea_righe(const TListaRitFisc_mask& m) const
 | 
			
		||||
	for (bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
 | 
			
		||||
		totale += curr.get("RDOC.RITENUTA").as_real();
 | 
			
		||||
	err = NOERR;
 | 
			
		||||
	if (yesno_box("Verranno generate %d righe per un importo di %s euro. Si desidera creare le righe?", rdoc.items(), totale.string()))
 | 
			
		||||
	if (yesno_box("Verranno generate %d righe per un importo di %s euro.\n"
 | 
			
		||||
                "Si desidera proseguire?", rdoc.items(), totale.string()))
 | 
			
		||||
	{
 | 
			
		||||
		long cont = get_next_progr_f24();
 | 
			
		||||
		long numf24 = get_next_f24();
 | 
			
		||||
@ -140,6 +144,7 @@ void TListaRitFisc::main_loop()
 | 
			
		||||
			  }
 | 
			
		||||
			  rep.print_or_preview();	//stampa il book dei report
 | 
			
		||||
		  }
 | 
			
		||||
      break;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -650,5 +650,5 @@ bool TCopia_documento::elabora(TLista_documenti& doc_in, TLista_documenti& doc_o
 | 
			
		||||
	post_process_input(doc_in);
 | 
			
		||||
  post_process(doc_out, doc_in);
 | 
			
		||||
 | 
			
		||||
  return TRUE;     
 | 
			
		||||
  return true;     
 | 
			
		||||
} 
 | 
			
		||||
 | 
			
		||||
@ -374,7 +374,9 @@ bool TContabilizzazione_analitica::find_conti_iva_indetraibile(const TRiga_docum
 | 
			
		||||
  return !conti.empty();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TString_array& conti, int annoes, bool riclassifica_fdr_fde, const char tipomov, real & amount_to_split, real & no_ca_amount, const real & valore, bool & pareggio)
 | 
			
		||||
bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TString_array& conti, int annoes, 
 | 
			
		||||
                                              bool riclassifica_fdr_fde, const char tipomov, 
 | 
			
		||||
                                              real& amount_to_split, real& no_ca_amount, const real& valore, bool& pareggio)
 | 
			
		||||
{
 | 
			
		||||
  bool bArcticleFound = false;
 | 
			
		||||
 | 
			
		||||
@ -663,7 +665,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
 | 
			
		||||
		if (tiva != iva_vendite && !riga.is_sconto())
 | 
			
		||||
		{
 | 
			
		||||
			const TString4 tipodet = riga.get(RDOC_TIPODET);
 | 
			
		||||
			int td;
 | 
			
		||||
			int td = 0;
 | 
			
		||||
			const real pind = indetraibile_al(tipodet, caus, datareg.year(), td);
 | 
			
		||||
 | 
			
		||||
			if (pind > ZERO)
 | 
			
		||||
@ -815,7 +817,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (amount_to_split != ZERO)
 | 
			
		||||
	if (!amount_to_split.is_zero())
 | 
			
		||||
		split_sp_amount(mov, has_pareggio, totdoc, spese, amount_to_split, no_ca_amount, doc.decimals());
 | 
			
		||||
 | 
			
		||||
  if (can_write && mov.rows() > 0)
 | 
			
		||||
 | 
			
		||||
@ -1029,9 +1029,9 @@ void TDocumento_mask::cli2mask(bool force_load)
 | 
			
		||||
		if (id2pos(F_IBAN_STATO) > 0)
 | 
			
		||||
		{
 | 
			
		||||
			set(F_IBAN, iban);
 | 
			
		||||
			efield(F_IBAN_STATO).validate(K_TAB);
 | 
			
		||||
			if (iban.not_empty())
 | 
			
		||||
			if (iban.full())
 | 
			
		||||
			{
 | 
			
		||||
  			efield(F_IBAN_STATO).validate(K_TAB);
 | 
			
		||||
				set(F_IBAN_STATO, iban.left(2));
 | 
			
		||||
				set(F_IBAN_CHECK, iban.mid(2,2));
 | 
			
		||||
				set(F_BBAN			, iban.mid(4));
 | 
			
		||||
@ -1040,6 +1040,16 @@ void TDocumento_mask::cli2mask(bool force_load)
 | 
			
		||||
				set(F_BBAN_CAB	, iban.mid(10,5));
 | 
			
		||||
				set(F_BBAN_CONTO, iban.mid(15,12));
 | 
			
		||||
			}
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
				reset(F_IBAN_STATO);
 | 
			
		||||
				reset(F_IBAN_CHECK);
 | 
			
		||||
				reset(F_BBAN			);
 | 
			
		||||
				reset(F_BBAN_CIN	);
 | 
			
		||||
				reset(F_BBAN_ABI	);
 | 
			
		||||
				reset(F_BBAN_CAB	);
 | 
			
		||||
				reset(F_BBAN_CONTO);
 | 
			
		||||
      }
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		key.cut(0);
 | 
			
		||||
@ -1374,6 +1384,7 @@ void TDocumento_mask::doc2mask(bool reload_clifo, bool force_load, bool update)
 | 
			
		||||
		  check_field(F_CODCF);
 | 
			
		||||
		  check_field(F_CODINDSP);
 | 
			
		||||
    }
 | 
			
		||||
/*
 | 
			
		||||
	  if (id2pos(F_IBAN_STATO) > 0)
 | 
			
		||||
	  {
 | 
			
		||||
		  const TString80 iban = doc().get(DOC_IBAN);
 | 
			
		||||
@ -1390,8 +1401,37 @@ void TDocumento_mask::doc2mask(bool reload_clifo, bool force_load, bool update)
 | 
			
		||||
			  set(F_BBAN_CONTO, iban.mid(15,12));
 | 
			
		||||
		  }
 | 
			
		||||
    }
 | 
			
		||||
*/
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
	if (id2pos(F_IBAN_STATO) > 0)
 | 
			
		||||
	{
 | 
			
		||||
		const TString80 iban = doc().get(DOC_IBAN);
 | 
			
		||||
		set(F_IBAN, iban);
 | 
			
		||||
		if (iban.full())
 | 
			
		||||
		{
 | 
			
		||||
			set(F_IBAN_STATO, iban.left(2));
 | 
			
		||||
			set(F_IBAN_CHECK, iban.mid(2,2));
 | 
			
		||||
			set(F_BBAN			, iban.mid(4));
 | 
			
		||||
			set(F_BBAN_CIN	, iban.mid(4,1));
 | 
			
		||||
			set(F_BBAN_ABI	, iban.mid(5,5));
 | 
			
		||||
			set(F_BBAN_CAB	, iban.mid(10,5));
 | 
			
		||||
			set(F_BBAN_CONTO, iban.mid(15,12));
 | 
			
		||||
  		efield(F_IBAN_STATO).validate(K_TAB);
 | 
			
		||||
		}
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
			reset(F_IBAN_STATO);
 | 
			
		||||
			reset(F_IBAN_CHECK);
 | 
			
		||||
			reset(F_BBAN			);
 | 
			
		||||
			reset(F_BBAN_CIN	);
 | 
			
		||||
			reset(F_BBAN_ABI	);
 | 
			
		||||
			reset(F_BBAN_CAB	);
 | 
			
		||||
			reset(F_BBAN_CONTO);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  TSheet_field& s = sfield(F_SHEET);
 | 
			
		||||
  s.destroy();
 | 
			
		||||
	const int righe = doc().physical_rows();
 | 
			
		||||
@ -1419,7 +1459,7 @@ void TDocumento_mask::mask2doc()
 | 
			
		||||
{
 | 
			
		||||
	for (int p = fields()-1; p >= 0; p--)
 | 
			
		||||
	{
 | 
			
		||||
		TMask_field& f = fld(p);
 | 
			
		||||
		const TMask_field& f = fld(p);
 | 
			
		||||
		const TFieldref* fr = f.field();
 | 
			
		||||
		if (fr)
 | 
			
		||||
			fr->write(f.get(), doc());
 | 
			
		||||
@ -3143,7 +3183,7 @@ int TElabora_mask::update_list()
 | 
			
		||||
 | 
			
		||||
bool TElabora_mask::elabora()
 | 
			
		||||
{	 
 | 
			
		||||
	bool update_mask = FALSE;
 | 
			
		||||
	bool update_mask = false;
 | 
			
		||||
 | 
			
		||||
	TLista_documenti in;
 | 
			
		||||
	TLista_documenti out;																 
 | 
			
		||||
@ -3151,10 +3191,10 @@ bool TElabora_mask::elabora()
 | 
			
		||||
	const long numdoc = field(F_NDOC_ELAB).active() ? get_long(F_NDOC_ELAB) : app_doc.get_long(DOC_NDOC);
 | 
			
		||||
	const bool update_header = get_bool(F_UPDATE_HEADER);
 | 
			
		||||
	const bool from_elab = !get_bool(F_TYPE);	 
 | 
			
		||||
	TElaborazione * e = curr_elab();
 | 
			
		||||
 | 
			
		||||
  TElaborazione* e = curr_elab();
 | 
			
		||||
	if (e == NULL)
 | 
			
		||||
		return FALSE;
 | 
			
		||||
		return false;
 | 
			
		||||
	
 | 
			
		||||
	if (e->tipo() == _consegna_ordini)
 | 
			
		||||
	{
 | 
			
		||||
@ -3221,7 +3261,7 @@ bool TElabora_mask::elabora()
 | 
			
		||||
			return false ;
 | 
			
		||||
		char provv = get(F_PROVV_ELAB)[0];
 | 
			
		||||
		int anno = get_int(F_ANNO_ELAB);
 | 
			
		||||
		TString16 codnum(get(F_CODNUM_ELAB));
 | 
			
		||||
		const TString4 codnum = get(F_CODNUM_ELAB);
 | 
			
		||||
		long ndoc = get_long(F_NDOC_ELAB);
 | 
			
		||||
 | 
			
		||||
		if (ndoc > 0L && !in.find(provv, anno, codnum, ndoc))
 | 
			
		||||
@ -3231,13 +3271,13 @@ bool TElabora_mask::elabora()
 | 
			
		||||
		}
 | 
			
		||||
		if (update_header)									 
 | 
			
		||||
		{																											
 | 
			
		||||
			const TString4 tipo_doc(app_doc.get(DOC_TIPODOC));
 | 
			
		||||
			const TString8 caus_mag(app_doc.get(DOC_CAUSMAG));
 | 
			
		||||
			const TString4 tipo_doc=app_doc.get(DOC_TIPODOC);
 | 
			
		||||
			const TString8 caus_mag=app_doc.get(DOC_CAUSMAG);
 | 
			
		||||
			const long movmag      = app_doc.get_long(DOC_MOVMAG);
 | 
			
		||||
			const TDate datadoc    = app_doc.get_date(DOC_DATADOC);
 | 
			
		||||
			const TDate datainsc   = app_doc.get_date(DOC_DATAINSC);
 | 
			
		||||
			const TDate datapart   = app_doc.get_date(DOC_DATAPART);
 | 
			
		||||
			const TString8 orapart(app_doc.get(DOC_ORAPART));
 | 
			
		||||
			const TString8 orapart = app_doc.get(DOC_ORAPART);
 | 
			
		||||
			const char stato       = app_doc.stato();
 | 
			
		||||
			
 | 
			
		||||
			TDocumento::copy_data(app_doc.head(), in[0].head());
 | 
			
		||||
@ -3247,6 +3287,8 @@ bool TElabora_mask::elabora()
 | 
			
		||||
			app_doc.put(DOC_MOVMAG,   movmag);
 | 
			
		||||
			app_doc.put(DOC_DATADOC,  datadoc);
 | 
			
		||||
			app_doc.put(DOC_DATAINSC, datainsc);
 | 
			
		||||
			app_doc.put(DOC_DATAPART, datapart);
 | 
			
		||||
			app_doc.put(DOC_ORAPART,  orapart);
 | 
			
		||||
			app_doc.put(DOC_STATO,    stato);
 | 
			
		||||
		}
 | 
			
		||||
		out.add(app_doc);
 | 
			
		||||
@ -3291,7 +3333,7 @@ bool TElabora_mask::elabora()
 | 
			
		||||
 | 
			
		||||
TElaborazione* TElabora_mask::curr_elab()
 | 
			
		||||
{
 | 
			
		||||
	const TString16 cod_elab(get(F_ELAB));
 | 
			
		||||
	const TString8 cod_elab(get(F_ELAB));
 | 
			
		||||
	return cod_elab.not_empty() ? &_elab[cod_elab] : NULL;
 | 
			
		||||
}		 
 | 
			
		||||
 | 
			
		||||
@ -3569,7 +3611,7 @@ bool TDocumento_mask::elabora_handler( TMask_field& f, KEY key )
 | 
			
		||||
		if (!m.check_fields()) // Check values
 | 
			
		||||
      return false;
 | 
			
		||||
		
 | 
			
		||||
    TElabora_mask* selection = new TElabora_mask(m); // No woman no stack
 | 
			
		||||
    TElabora_mask* selection = new TElabora_mask(m); 
 | 
			
		||||
		bool do_checks = false;
 | 
			
		||||
		const char stato_iniziale = m.doc().stato();
 | 
			
		||||
		m.update_father_rows();
 | 
			
		||||
 | 
			
		||||
@ -180,17 +180,25 @@ bool fido_hndl(TMask_field& field, KEY key)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool ora_hndl( TMask_field& field, KEY key )
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
	if (field.to_check(key,true))
 | 
			
		||||
	{
 | 
			
		||||
		TString16 ora;
 | 
			
		||||
		TString8 ora;
 | 
			
		||||
		
 | 
			
		||||
		if (field.automagic() && field.get().empty())
 | 
			
		||||
		if (field.automagic() && field.empty())
 | 
			
		||||
		{
 | 
			
		||||
			struct tm* t = xvt_time_now();
 | 
			
		||||
			ora.format("%02d%02d", t->tm_hour, t->tm_min);
 | 
			
		||||
			field.set((ora));
 | 
			
		||||
 | 
			
		||||
      TMask& m = field.mask();
 | 
			
		||||
      const int pos_data = m.id2pos(field.dlg()) - 1;
 | 
			
		||||
      TMask_field& dt = m.fld(pos_data);
 | 
			
		||||
      if (dt.is_kind_of(CLASS_DATE_FIELD) && dt.automagic())
 | 
			
		||||
      {
 | 
			
		||||
        const TDate oggi(TODAY);
 | 
			
		||||
        dt.set(oggi.string());
 | 
			
		||||
      }
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
@ -199,11 +207,13 @@ bool ora_hndl( TMask_field& field, KEY key )
 | 
			
		||||
			{
 | 
			
		||||
				if (!isdigit(ora[0]) ||	!isdigit(ora[1]) ||	!isdigit(ora[2]) ||
 | 
			
		||||
						!isdigit(ora[3]) ||	atoi(ora.left(2)) > 23 || atoi(ora.mid(2)) > 59)
 | 
			
		||||
					return error_box(TR("Ora errata"));
 | 
			
		||||
					return field.error_box(TR("Ora errata"));
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
      {
 | 
			
		||||
				if (field.required())
 | 
			
		||||
					 return error_box(TR("Ora obbligatoria"));
 | 
			
		||||
				  return field.error_box(TR("Ora obbligatoria"));
 | 
			
		||||
      }
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -2838,7 +2848,7 @@ bool codcms_handler(TMask_field& f, KEY key)
 | 
			
		||||
				mask.set(mask.field(F_CODCABA).active() ? F_CODCABA : F_CODCABA1, cfban.get(CFBAN_CAB), 3);
 | 
			
		||||
				mask.set(F_IBAN, cfban.get(CFBAN_IBAN));
 | 
			
		||||
			}
 | 
			
		||||
		} //if (main_app().has_module(CUAUT) && (...
 | 
			
		||||
		} //if (main_app().has_module(CTAUT) && (...
 | 
			
		||||
 | 
			
		||||
    //aggiornamento automatico del campo codice contabilita' separata nel caso di commessa che ce lo abbia
 | 
			
		||||
    if (main_app().has_module(NPAUT) && (key == K_TAB && f.focusdirty()))
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,7 @@ Item_04 = "Copia documenti", "ve5 -2", "F"
 | 
			
		||||
Item_05 = "Compattamento documenti", "ve5 -4", "F"
 | 
			
		||||
Item_06 = "Invio e ricezione documenti", "ve5 -3", "F"
 | 
			
		||||
Item_07 = "Lista ritenute per F24", "ve8 -0", "F"
 | 
			
		||||
Item_08 = "Controllo IBAN su documenti", "ve4 -2", "F"
 | 
			
		||||
 | 
			
		||||
[VEMENU_052]
 | 
			
		||||
Caption = "Configurazione"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user