Patch level :

Files correlati     : tp0.exe
Ricompilazione Demo : [ ]
Commento            :
Aggiunta gestione avanzata IBAN su clienti e fornitori


git-svn-id: svn://10.65.10.50/branches/R_10_00@22426 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-09-23 10:59:01 +00:00
parent 4972385cec
commit e2caf519a3
3 changed files with 42 additions and 22 deletions

View File

@ -234,17 +234,17 @@ bool TPack_transfer::log_cancelled()
return log_error(TR("Procedura interrotta dall'utente"));
}
bool TPack_transfer::test_write(TLocalisamfile& file, bool re)
bool TPack_transfer::test_write(TBaseisamfile& file, bool re)
{
int err = NOERR;
if (_write_enabled)
{
if (re)
err = file.rewrite();
err = file.rewrite_write();
else
{
TString80 code, desc;
if (file.num() == LF_TAB || file.num() == LF_TABCOM)
if (file.num() == LF_TAB || file.num() == LF_TABCOM || file.num() == LF_TABMOD)
{
code = file.get("CODTAB");
desc = file.get("S0");
@ -256,7 +256,7 @@ bool TPack_transfer::test_write(TLocalisamfile& file, bool re)
}
TString msg;
msg << TR("Inserimento ") << code << " (" << desc << ')'
<< TR(" nel file ") << file.num() << ' ' << file.description();
<< TR(" nel file ") << ' ' << file.num() << " (" << file.description() << ')';
log(msg, 1);
err = file.write();

View File

@ -75,8 +75,8 @@ public:
bool write_enabled() const { return _write_enabled; }
bool test_write(TLocalisamfile& file, bool re = false);
bool test_rewrite(TLocalisamfile& file) { return test_write(file, true); }
bool test_write(TBaseisamfile& file, bool re = false);
bool test_rewrite(TBaseisamfile& file) { return test_write(file, true); }
virtual ~TPack_transfer();
};
@ -147,10 +147,10 @@ class TPack_clifo : public TPack_transfer
bool _only_agenti;
protected:
int cancella_clifo(TLocalisamfile& clifo) const;
int cancella_clifo(TBaseisamfile& clifo) const;
long get_next_key(const char tipocf) const;
void update_statusflag_codcontab(const TString& custsuppcode, const int statusflag, const TString& codcontab);
bool aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi);
bool aggiorna_record(TBaseisamfile& file, const TString_array& lista_campi);
void aggiorna_banca();
void trasferisci_conai(TRectype& rec);
const TString& decode_agente(const long codforn);

View File

@ -3,15 +3,16 @@
#include <recarray.h>
#include <tabutil.h>
#include "..\pr\agenti.h"
#include <clifo.h>
#include <cfven.h>
#include <clifo.h>
#include <comuni.h>
#include <doc.h>
#include <indsp.h>
#include <mov.h>
#include "..\cg\cfban.h"
#include "..\pr\agenti.h"
///////////////////////////////////////////////////////////
// Cache banche
///////////////////////////////////////////////////////////
@ -195,7 +196,7 @@ const TString& TPack_clifo::get_agente()
return EMPTY_STRING;
}
int TPack_clifo::cancella_clifo(TLocalisamfile& clifo) const
int TPack_clifo::cancella_clifo(TBaseisamfile& clifo) const
{
// verificare prima che il cliente sia cancellabile (MOV e DOC)
TRectype& rec_clifo = clifo.curr();
@ -333,10 +334,13 @@ bool TPack_clifo::trasferisci()
ini.list_variables(lista_cfven, true, "CFVEN", true);
ini.list_variables(lista_agenti, true, "AGENTI", true);
TLocalisamfile clifo(LF_CLIFO);
TLocalisamfile cfven(LF_CFVEN);
TRectype& rec_clifo = clifo.curr();
TFast_isamfile clifo(LF_CLIFO);
TFast_isamfile cfven(LF_CFVEN);
TFast_isamfile cfban(LF_CFBAN);
TRectype& rec_clifo = clifo.curr();
TRectype& rec_cfven = cfven.curr();
TRectype& rec_cfban = cfban.curr();
TRecord_cache cache_comuni(LF_COMUNI, 2);
@ -354,12 +358,12 @@ bool TPack_clifo::trasferisci()
if (!needs_creation)
{
// il cliente/fornitore va aggiornato
rec_cfven.zero();
cfven.zero();
rec_cfven.put(CFV_TIPOCF, tipocf);
rec_cfven.put(CFV_CODCF, codcf);
cfven.read();
rec_clifo.zero();
clifo.zero();
rec_clifo.put(CLI_TIPOCF, tipocf);
rec_clifo.put(CLI_CODCF, codcf);
good = clifo.read() == NOERR;
@ -422,7 +426,21 @@ bool TPack_clifo::trasferisci()
const bool ibanflag = get_long("IbanFlag") != 0;
if (ibanflag)
{
rec_clifo.put(CLI_IBAN, get_str("IbanCode"));
const TString& iban = get_str("IbanCode");
if (iban.len() >= 15) // A volte ci sono dei valori non validi come "IT46"
{
rec_clifo.put(CLI_IBAN, iban);
cfban.zero();
rec_cfban.put(CFBAN_TIPOCF, tipocf);
rec_cfban.put(CFBAN_CODCF, codcf);
rec_cfban.put(CFBAN_TIPOBAN, 'V');
rec_cfban.put(CFBAN_NRIGA, 1);
rec_cfban.put(CFBAN_ABI, iban.mid( 5,5));
rec_cfban.put(CFBAN_CAB, iban.mid(10,5));
rec_cfban.put(CFBAN_NUMCC, iban.mid(15));
rec_cfban.put(CFBAN_IBAN, iban);
test_write(cfban, !needs_creation);
}
}
// agente
rec_cfven.put(CFV_CODAG, get_agente());
@ -460,11 +478,12 @@ bool TPack_clifo::trasferisci()
void TPack_clifo::update_statusflag_codcontab(const TString& custsuppcode, const int statusflag, const TString& codcontab)
{
TString query;
query.format("UPDATE Customers_Suppliers SET StatusFlag=%d, CodContab='%s' WHERE CustSuppCode='%s'", statusflag, (const char*) codcontab, (const char*) custsuppcode);
query.format("UPDATE Customers_Suppliers SET StatusFlag=%d, CodContab='%s' WHERE CustSuppCode='%s'",
statusflag, (const char*)codcontab, (const char*)custsuppcode);
odbc_exec(query);
}
bool TPack_clifo::aggiorna_record(TLocalisamfile& file, const TString_array& lista_campi)
bool TPack_clifo::aggiorna_record(TBaseisamfile& file, const TString_array& lista_campi)
{
TRectype& rec = file.curr();
TString campo_dest, campo_orig, valore, str;
@ -635,8 +654,8 @@ bool TPack_indsped::trasferisci()
{
// custsupprefcode e' il cliente/fornitore a cui si riferisce l'indirizzo di spedizione
const char* custsupprefcode = get_str("CustSuppRefCode");
str.format(FR("Non esiste l'indirizzo di spedizione %ld/%d corrispondente a %s"),
codcf, codind, custsupprefcode);
str.format(FR("Non esiste il %s %d corrispondente a %s"),
tipocf == 'C' ? TR("cliente") : TR("fornitore"), codcf, custsupprefcode);
log(str, 1);
}
}
@ -652,6 +671,7 @@ bool TPack_indsped::trasferisci()
rec_indsped.put(IND_TIPOCF, tipocf);
rec_indsped.put(IND_CODCF, codcf);
rec_indsped.put(IND_CODIND, codind);
codcontab.cut(0);
codcontab.add(codcf);
codcontab.add(codind);
good = test_write(indsped);