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")); 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; int err = NOERR;
if (_write_enabled) if (_write_enabled)
{ {
if (re) if (re)
err = file.rewrite(); err = file.rewrite_write();
else else
{ {
TString80 code, desc; 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"); code = file.get("CODTAB");
desc = file.get("S0"); desc = file.get("S0");
@ -256,7 +256,7 @@ bool TPack_transfer::test_write(TLocalisamfile& file, bool re)
} }
TString msg; TString msg;
msg << TR("Inserimento ") << code << " (" << desc << ')' msg << TR("Inserimento ") << code << " (" << desc << ')'
<< TR(" nel file ") << file.num() << ' ' << file.description(); << TR(" nel file ") << ' ' << file.num() << " (" << file.description() << ')';
log(msg, 1); log(msg, 1);
err = file.write(); err = file.write();

View File

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

View File

@ -3,15 +3,16 @@
#include <recarray.h> #include <recarray.h>
#include <tabutil.h> #include <tabutil.h>
#include "..\pr\agenti.h"
#include <clifo.h>
#include <cfven.h> #include <cfven.h>
#include <clifo.h>
#include <comuni.h> #include <comuni.h>
#include <doc.h> #include <doc.h>
#include <indsp.h> #include <indsp.h>
#include <mov.h> #include <mov.h>
#include "..\cg\cfban.h"
#include "..\pr\agenti.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Cache banche // Cache banche
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
@ -195,7 +196,7 @@ const TString& TPack_clifo::get_agente()
return EMPTY_STRING; 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) // verificare prima che il cliente sia cancellabile (MOV e DOC)
TRectype& rec_clifo = clifo.curr(); 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_cfven, true, "CFVEN", true);
ini.list_variables(lista_agenti, true, "AGENTI", true); ini.list_variables(lista_agenti, true, "AGENTI", true);
TLocalisamfile clifo(LF_CLIFO); TFast_isamfile clifo(LF_CLIFO);
TLocalisamfile cfven(LF_CFVEN); TFast_isamfile cfven(LF_CFVEN);
TFast_isamfile cfban(LF_CFBAN);
TRectype& rec_clifo = clifo.curr(); TRectype& rec_clifo = clifo.curr();
TRectype& rec_cfven = cfven.curr(); TRectype& rec_cfven = cfven.curr();
TRectype& rec_cfban = cfban.curr();
TRecord_cache cache_comuni(LF_COMUNI, 2); TRecord_cache cache_comuni(LF_COMUNI, 2);
@ -354,12 +358,12 @@ bool TPack_clifo::trasferisci()
if (!needs_creation) if (!needs_creation)
{ {
// il cliente/fornitore va aggiornato // il cliente/fornitore va aggiornato
rec_cfven.zero(); cfven.zero();
rec_cfven.put(CFV_TIPOCF, tipocf); rec_cfven.put(CFV_TIPOCF, tipocf);
rec_cfven.put(CFV_CODCF, codcf); rec_cfven.put(CFV_CODCF, codcf);
cfven.read(); cfven.read();
rec_clifo.zero(); clifo.zero();
rec_clifo.put(CLI_TIPOCF, tipocf); rec_clifo.put(CLI_TIPOCF, tipocf);
rec_clifo.put(CLI_CODCF, codcf); rec_clifo.put(CLI_CODCF, codcf);
good = clifo.read() == NOERR; good = clifo.read() == NOERR;
@ -422,7 +426,21 @@ bool TPack_clifo::trasferisci()
const bool ibanflag = get_long("IbanFlag") != 0; const bool ibanflag = get_long("IbanFlag") != 0;
if (ibanflag) 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 // agente
rec_cfven.put(CFV_CODAG, get_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) void TPack_clifo::update_statusflag_codcontab(const TString& custsuppcode, const int statusflag, const TString& codcontab)
{ {
TString query; 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); 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(); TRectype& rec = file.curr();
TString campo_dest, campo_orig, valore, str; 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 // custsupprefcode e' il cliente/fornitore a cui si riferisce l'indirizzo di spedizione
const char* custsupprefcode = get_str("CustSuppRefCode"); const char* custsupprefcode = get_str("CustSuppRefCode");
str.format(FR("Non esiste l'indirizzo di spedizione %ld/%d corrispondente a %s"), str.format(FR("Non esiste il %s %d corrispondente a %s"),
codcf, codind, custsupprefcode); tipocf == 'C' ? TR("cliente") : TR("fornitore"), codcf, custsupprefcode);
log(str, 1); log(str, 1);
} }
} }
@ -652,6 +671,7 @@ bool TPack_indsped::trasferisci()
rec_indsped.put(IND_TIPOCF, tipocf); rec_indsped.put(IND_TIPOCF, tipocf);
rec_indsped.put(IND_CODCF, codcf); rec_indsped.put(IND_CODCF, codcf);
rec_indsped.put(IND_CODIND, codind); rec_indsped.put(IND_CODIND, codind);
codcontab.cut(0);
codcontab.add(codcf); codcontab.add(codcf);
codcontab.add(codind); codcontab.add(codind);
good = test_write(indsped); good = test_write(indsped);