Patch level : 12.0 420
Files correlati : Commento : Maschera: - Tolti attributi ghost ai campi clifoDoc - Aggiunto bottone invio per programma Java Programma: - Sistemata getCli - aggiunta xvt_fsys_fupdate() per copiare ssa nella cartella di ModuliSirio - definita macro IF_IS_ENABLED - Ottimizzate funzioni con reference - Aggiunta TTrFa_app::copySSA() - Reso funzionante la funzione di marcatura dei record esportati git-svn-id: svn://10.65.10.50/branches/R_10_00@23940 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ccaf3f2549
commit
4a8623e5d2
@ -96,24 +96,22 @@ TRectype getTrasFatt(TString reg, TString codiva)
|
|||||||
return cache().get(LF_TRASFATT, key);
|
return cache().get(LF_TRASFATT, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype getCli(TString tipocf, TString codcf)
|
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi)
|
||||||
{
|
{
|
||||||
if(tipocf != "O")
|
TString key = tipocf; key << "|" << codcf;
|
||||||
{
|
const TRectype& cli = cache().get(LF_CLIFO, key);
|
||||||
TString key = tipocf; key << "|" << codcf;
|
if(cli.get_bool("OCCAS"))
|
||||||
return cache().get(LF_CLIFO, key);
|
|
||||||
}
|
|
||||||
// Cliente occasionale!
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
TRectype cli(LF_CLIFO);
|
TRectype cli(LF_CLIFO);
|
||||||
TRectype occas = cache().get(LF_OCCAS, codcf);
|
TRectype occas = cache().get(LF_OCCAS, ocfpi);
|
||||||
cli.put("RAGSOC" , occas.get("RAGSOC"));
|
cli.put("RAGSOC" , occas.get("RAGSOC"));
|
||||||
cli.put("CODRFSO" , "");
|
cli.put("CODRFSO" , "");
|
||||||
cli.put("PAIV" , occas.get("PAIV"));
|
cli.put("PAIV" , occas.get("PAIV"));
|
||||||
cli.put("COFI" , occas.get("COFI"));
|
cli.put("COFI" , occas.get("COFI"));
|
||||||
return cli;
|
return cli;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
return cli;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||||
@ -129,6 +127,26 @@ static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
|
|||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
|
||||||
|
bool xvt_fsys_fupdate(const char* src, const char* dst)
|
||||||
|
{
|
||||||
|
bool ok = false;
|
||||||
|
if (xvt_fsys_file_exists(src))
|
||||||
|
{
|
||||||
|
const long tsrc = xvt_fsys_file_attr(src, XVT_FILE_ATTR_MTIME);
|
||||||
|
if (tsrc > 0)
|
||||||
|
{
|
||||||
|
long tdst = 0;
|
||||||
|
if (xvt_fsys_file_exists(dst))
|
||||||
|
tdst = xvt_fsys_file_attr(dst, XVT_FILE_ATTR_MTIME);
|
||||||
|
if (tsrc > tdst)
|
||||||
|
ok = xvt_fsys_fcopy(src, dst) != 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ok;
|
||||||
|
}
|
||||||
|
|
||||||
// Controlla se l'azienda ha un RFSO
|
// Controlla se l'azienda ha un RFSO
|
||||||
bool haveRFSO(TString& codrfso)
|
bool haveRFSO(TString& codrfso)
|
||||||
{
|
{
|
||||||
@ -627,7 +645,8 @@ bool TTrFa_app::create()
|
|||||||
{
|
{
|
||||||
createDB();
|
createDB();
|
||||||
}
|
}
|
||||||
return TSkeleton_application::create();
|
|
||||||
|
return TSkeleton_application::create();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sincronizzo il DB SQL con quello di campo
|
// Sincronizzo il DB SQL con quello di campo
|
||||||
@ -674,6 +693,36 @@ bool TTrFa_app::createDB()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TTrFa_app::copySSA()
|
||||||
|
{
|
||||||
|
TFilename tmp;
|
||||||
|
|
||||||
|
// Copia eventuali protezioni software
|
||||||
|
TString_array files;
|
||||||
|
if (list_files(SPESOMETROBASE "/*.ssa", files) == 0)
|
||||||
|
{
|
||||||
|
list_files("*.ssa", files);
|
||||||
|
FOR_EACH_ARRAY_ROW(files, i, row)
|
||||||
|
{
|
||||||
|
tmp = SPESOMETROBASE; tmp.add(*row);
|
||||||
|
xvt_fsys_fupdate(*row, tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
files.destroy();
|
||||||
|
if (list_files(SPESOMETROBASE "/*.ssa", files) != 1)
|
||||||
|
{
|
||||||
|
warning_box(FR("Nella cartella %s deve essere presente esattamente un file .ssa"), SPESOMETROBASE);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
TFilename home;
|
||||||
|
xvt_sys_get_env("USERPROFILE", home.get_buffer(), home.size());
|
||||||
|
home.add("SoftwareSirio"); home.add(SPESOMETROBASE);
|
||||||
|
if (!dexist(home))
|
||||||
|
make_dir(home);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool TTrFa_app::send(TTrFa_mask* msk)
|
bool TTrFa_app::send(TTrFa_mask* msk)
|
||||||
{
|
{
|
||||||
// Controllo se è la prima esecuzione, in caso positivo chiedo se vuole controllare p.iva e cf
|
// Controllo se è la prima esecuzione, in caso positivo chiedo se vuole controllare p.iva e cf
|
||||||
@ -719,7 +768,14 @@ bool TTrFa_app::send(TTrFa_mask* msk)
|
|||||||
message_box("Ho esportato correttamente!");
|
message_box("Ho esportato correttamente!");
|
||||||
// Imposto l'esportazione
|
// Imposto l'esportazione
|
||||||
if(yesno_box("Vuoi segnare i record esportati?"))
|
if(yesno_box("Vuoi segnare i record esportati?"))
|
||||||
setEsportato(sheet);
|
{
|
||||||
|
if(setEsportato(sheet))
|
||||||
|
message_box("Record segnati correttamente!");
|
||||||
|
else
|
||||||
|
message_box("Ci sono stati degli errori durante la riscrittura dei records");
|
||||||
|
msk->setFilterChanged();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
message_box("Errore durante il salvataggio delle modifiche");
|
message_box("Errore durante il salvataggio delle modifiche");
|
||||||
@ -794,6 +850,7 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
bool cli = false, fo = false;
|
bool cli = false, fo = false;
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
||||||
{
|
{
|
||||||
|
IF_IS_ENABLED(strarr);
|
||||||
if(strarr->get_char(_tipocf) == 'C')
|
if(strarr->get_char(_tipocf) == 'C')
|
||||||
cli = true;
|
cli = true;
|
||||||
else
|
else
|
||||||
@ -802,9 +859,10 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
}
|
}
|
||||||
// Metto qua il numero di telefono per dopo
|
// Metto qua il numero di telefono per dopo
|
||||||
TString80 tel; tel << firm.get("PTEL") << firm.get("TEL");
|
TString80 tel; tel << firm.get("PTEL") << firm.get("TEL");
|
||||||
bool ok = true;
|
bool ok = false;
|
||||||
if(cli)
|
if(cli)
|
||||||
{
|
{
|
||||||
|
ok = true;
|
||||||
TTrFa_record dte("TFF0100F");
|
TTrFa_record dte("TFF0100F");
|
||||||
|
|
||||||
// Controllo la presenza di un caricamento in attesa
|
// Controllo la presenza di un caricamento in attesa
|
||||||
@ -841,6 +899,7 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
}
|
}
|
||||||
if(fo)
|
if(fo)
|
||||||
{
|
{
|
||||||
|
ok = true;
|
||||||
TTrFa_record dtr("TFF0100F");
|
TTrFa_record dtr("TFF0100F");
|
||||||
|
|
||||||
// Controllo la presenza di un caricamento in attesa
|
// Controllo la presenza di un caricamento in attesa
|
||||||
@ -985,7 +1044,8 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
{
|
{
|
||||||
if(!p.add_status())
|
if(!p.add_status())
|
||||||
return false;
|
return false;
|
||||||
if(strcmp(strarr->get(_invio), "X") != 0) continue; // Non mi interessa se non è selezionata
|
|
||||||
|
IF_IS_ENABLED(strarr);
|
||||||
|
|
||||||
// Controllo il clifo, se non c'è lo aggiungo altrimenti salto sto giro
|
// Controllo il clifo, se non c'è lo aggiungo altrimenti salto sto giro
|
||||||
TString checkClifo; checkClifo << strarr->get_char(_tipocf) << strarr->get_long(_codcf);
|
TString checkClifo; checkClifo << strarr->get_char(_tipocf) << strarr->get_long(_codcf);
|
||||||
@ -994,14 +1054,8 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
TAnagrafica cedeprest(LF_CLIFO, strarr->get_char(_tipocf), strarr->get_long(_codcf));
|
TRectype r_cedeprest = getCli(strarr->get(_tipocf), strarr->get(_codcf), strarr->get(_occas));
|
||||||
TString keyCedPrest; keyCedPrest << strarr->get_char(_tipocf) << "|" << strarr->get_long(_codcf);
|
TAnagrafica cedeprest(r_cedeprest);
|
||||||
|
|
||||||
TRectype r_cedeprest = cache().get(LF_CLIFO, keyCedPrest);
|
|
||||||
TString statocli = cache().get("%STA", r_cedeprest.get("STATOCF"), "S10");
|
|
||||||
// Se rimane vuoto è italiano
|
|
||||||
if(statocli == "")
|
|
||||||
statocli = "IT";
|
|
||||||
|
|
||||||
TTrFa_record tff0400f("TFF0400F");
|
TTrFa_record tff0400f("TFF0400F");
|
||||||
tff0400f.set("P4_KEYPRGINVIO", getKey(strarr));
|
tff0400f.set("P4_KEYPRGINVIO", getKey(strarr));
|
||||||
@ -1016,28 +1070,26 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
}
|
}
|
||||||
else // Fattura normale
|
else // Fattura normale
|
||||||
{
|
{
|
||||||
// Per le bolle doganali metto OO e 11 "9" in id paese e id fiscale iva
|
if (cedeprest.stato_partita_IVA().full() && cedeprest.partita_IVA().full())
|
||||||
if(strcmp(strarr->get(_codnum),"BD") == 0)
|
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_FISCIVAPAESE", "OO");
|
tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
|
||||||
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
tff0400f.set("P4_FISCIVACOD", cedeprest.partita_IVA());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cedeprest.stato_partita_IVA().full() && cedeprest.partita_IVA().full())
|
// Se non ho nemmeno un dato e sto processando una bolla doganale metto OO e 11 "9" in id paese e id fiscale iva
|
||||||
|
if(cedeprest.codice_fiscale().empty() && strcmp(strarr->get(_codnum),"BD") == 0)
|
||||||
{
|
{
|
||||||
tff0400f.set("P4_FISCIVAPAESE", cedeprest.stato_partita_IVA());
|
tff0400f.set("P4_FISCIVAPAESE", "OO");
|
||||||
tff0400f.set("P4_FISCIVACOD", cedeprest.partita_IVA());
|
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
tff0400f.set("P4_CODFISC", cedeprest.codice_fiscale());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
|
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
|
||||||
char tipo = r_cedeprest.get_char(CLI_ALLEG);
|
char tipo = r_cedeprest.exist(CLI_ALLEG) ? r_cedeprest.get_char(CLI_ALLEG) : '\0';
|
||||||
bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8');
|
bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8');
|
||||||
bool privato = tipo == '6';
|
bool privato = tipo == '6';
|
||||||
|
|
||||||
@ -1146,8 +1198,9 @@ bool TTrFa_app::tff0700(TSheet_field& sheet)
|
|||||||
{
|
{
|
||||||
if(!p.add_status())
|
if(!p.add_status())
|
||||||
return false;
|
return false;
|
||||||
if(strcmp(strarr->get(_invio), "X") != 0) continue; // Non mi interessa se non è selezionata
|
|
||||||
|
IF_IS_ENABLED(strarr);
|
||||||
|
|
||||||
TString checkFatt; checkFatt << strarr->get_char(_tipocf) << "|" << strarr->get_long(_codcf) << "|" << strarr->get(_numdoc);
|
TString checkFatt; checkFatt << strarr->get_char(_tipocf) << "|" << strarr->get_long(_codcf) << "|" << strarr->get(_numdoc);
|
||||||
if(fattSent.get_pos(checkFatt) < 0)
|
if(fattSent.get_pos(checkFatt) < 0)
|
||||||
{
|
{
|
||||||
@ -1273,8 +1326,11 @@ bool TTrFa_app::setEsportato(TSheet_field& sheet)
|
|||||||
{
|
{
|
||||||
if(!p.add_status())
|
if(!p.add_status())
|
||||||
return false;
|
return false;
|
||||||
if(strcmp(strarr->get(_invio), "X") != 0) continue; // Non mi interessa se non è selezionata
|
|
||||||
if(strcmp(strarr->get(_forzata), "X") == 0)
|
IF_IS_ENABLED(strarr);
|
||||||
|
|
||||||
|
TString modificato = strarr->get(_forzata);
|
||||||
|
if(modificato == "X")
|
||||||
{
|
{
|
||||||
ok = saveRec(*strarr, true);
|
ok = saveRec(*strarr, true);
|
||||||
if(!ok) return false;
|
if(!ok) return false;
|
||||||
@ -1282,7 +1338,7 @@ bool TTrFa_app::setEsportato(TSheet_field& sheet)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
TRectype row = cache().get(LF_MOV, TString(strarr->get(_numero)));
|
TRectype row = cache().get(LF_MOV, TString(strarr->get(_numero)));
|
||||||
row.put("TFINVIO", "X");
|
row.put("TFINVIO", "I");
|
||||||
row.put("TFDATA", TDate(TODAY).string());
|
row.put("TFDATA", TDate(TODAY).string());
|
||||||
ok = row.rewrite(TLocalisamfile(LF_MOV)) == NOERR;
|
ok = row.rewrite(TLocalisamfile(LF_MOV)) == NOERR;
|
||||||
if(!ok) return false;
|
if(!ok) return false;
|
||||||
@ -1306,20 +1362,20 @@ bool TTrFa_app::emptyTables(TString key)
|
|||||||
|
|
||||||
void TTrFa_app::main_loop()
|
void TTrFa_app::main_loop()
|
||||||
{
|
{
|
||||||
|
// Sposto SSA
|
||||||
|
if(!copySSA()) return;
|
||||||
|
|
||||||
TTrFa_mask msk("tf0100a");
|
TTrFa_mask msk("tf0100a");
|
||||||
|
|
||||||
while (msk.run() == K_ENTER)
|
while (msk.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
if(msk.checkNotEmpty())
|
if(msk.checkNotEmpty() && send(&msk))
|
||||||
send(&msk);
|
ini_set_string(CONFIG_DITTA, "tf", "LastSend", ++TDate(msk.get(F_DATAFIN)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TTrFa_app::destroy()
|
bool TTrFa_app::destroy()
|
||||||
{
|
{
|
||||||
if (_cofi.full())
|
|
||||||
ini_set_string(CONFIG_DITTA, "pa", "TRASMITTCOD", _cofi);
|
|
||||||
|
|
||||||
xvt_sql_close(_db); _db = NULL;
|
xvt_sql_close(_db); _db = NULL;
|
||||||
return TSkeleton_application::destroy();
|
return TSkeleton_application::destroy();
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,12 @@ BEGIN
|
|||||||
PICTURE TOOL_ELABORA
|
PICTURE TOOL_ELABORA
|
||||||
END
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_EMAIL 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Crea XML"
|
||||||
|
PICTURE TOOL_EMAIL
|
||||||
|
END
|
||||||
|
|
||||||
#include <helpbar.h>
|
#include <helpbar.h>
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
@ -250,7 +256,6 @@ BEGIN
|
|||||||
OUTPUT A_COFI COFI
|
OUTPUT A_COFI COFI
|
||||||
ADD RUN cg0 -1
|
ADD RUN cg0 -1
|
||||||
FIELD CODCF
|
FIELD CODCF
|
||||||
FLAGS "G"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING A_OCFPI 16
|
STRING A_OCFPI 16
|
||||||
@ -270,7 +275,6 @@ BEGIN
|
|||||||
GROUP 3
|
GROUP 3
|
||||||
ADD RUN cg0 -6
|
ADD RUN cg0 -6
|
||||||
FIELD OCFPI
|
FIELD OCFPI
|
||||||
FLAGS "G"
|
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING A_RAGSOC 50 47
|
STRING A_RAGSOC 50 47
|
||||||
|
@ -53,6 +53,7 @@ enum filter_fatt
|
|||||||
#define FLAG_ERRORE "E"
|
#define FLAG_ERRORE "E"
|
||||||
#define FLAG_NINVIO "N"
|
#define FLAG_NINVIO "N"
|
||||||
#define FLAG_FORZATO "F"
|
#define FLAG_FORZATO "F"
|
||||||
|
#define SPESOMETROBASE "ModuliSirio\\Spesometro"
|
||||||
|
|
||||||
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
/* Così facendo basta modificare la maschera (e le dichiarazioni di conseguenza)
|
||||||
* per avere l'inserimento nello sheet corretto */
|
* per avere l'inserimento nello sheet corretto */
|
||||||
@ -93,9 +94,11 @@ int getTipoDoc(TString id);
|
|||||||
// Ritorna il record custom
|
// Ritorna il record custom
|
||||||
TRectype getTrasFatt(TString reg, TString codiva);
|
TRectype getTrasFatt(TString reg, TString codiva);
|
||||||
// Ritorna il cliente in un record di $clifo, con tipocf = "O" lo cerca in $occas
|
// Ritorna il cliente in un record di $clifo, con tipocf = "O" lo cerca in $occas
|
||||||
TRectype getCli(TString tipocf, TString codcf);
|
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi);
|
||||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
||||||
|
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
|
||||||
|
bool xvt_fsys_fupdate(const char* src, const char* dst);
|
||||||
// Controlla se l'azienda ha un RFSO
|
// Controlla se l'azienda ha un RFSO
|
||||||
bool haveRFSO(TString& codrfso);
|
bool haveRFSO(TString& codrfso);
|
||||||
// Decodifica il tipo di documento per il trasferimento fatture
|
// Decodifica il tipo di documento per il trasferimento fatture
|
||||||
@ -104,6 +107,8 @@ const char * decodTipo(TToken_string* strarr);
|
|||||||
bool saveRec(TToken_string row, bool esportato = false);
|
bool saveRec(TToken_string row, bool esportato = false);
|
||||||
// Ritorno una data in formato ANSI
|
// Ritorno una data in formato ANSI
|
||||||
inline TDate toDate(const char * date) { return TDate(date).string(); }
|
inline TDate toDate(const char * date) { return TDate(date).string(); }
|
||||||
|
// Salto se la riga non è abilitata
|
||||||
|
#define IF_IS_ENABLED(strarr) if(strcmp(strarr->get(_invio), FLAG_INVIO) != 0 && strcmp(strarr->get(_invio), FLAG_FORZATO) != 0) continue;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// TTrFa_record
|
// TTrFa_record
|
||||||
@ -161,8 +166,8 @@ class TTrFa_cursors : TObject
|
|||||||
// Se trovo un record custom devo saltare tutti quelli che trovo successivamente, per fare ciò utilizzo una TToken_string
|
// Se trovo un record custom devo saltare tutti quelli che trovo successivamente, per fare ciò utilizzo una TToken_string
|
||||||
TToken_string _alqCust;
|
TToken_string _alqCust;
|
||||||
|
|
||||||
TRectype _next(return_code& code, TString& tipocf, TString& codcf); // Si sposta avanti di un elemento
|
TRectype _next(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi); // Si sposta avanti di un elemento
|
||||||
TRectype _nextCust(return_code& code, TString& tipocf, TString& codcf); // Si sposta avanti di un elemento tra quelli custom
|
TRectype _nextCust(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi); // Si sposta avanti di un elemento tra quelli custom
|
||||||
bool checkRecord(TISAM_recordset* rec);
|
bool checkRecord(TISAM_recordset* rec);
|
||||||
public:
|
public:
|
||||||
//TTrFa_cursors();
|
//TTrFa_cursors();
|
||||||
@ -170,7 +175,7 @@ public:
|
|||||||
long int getIvaItems() { return c_rmoviva->items(); }
|
long int getIvaItems() { return c_rmoviva->items(); }
|
||||||
long int getIvaPos() { return c_rmoviva->cursor()->pos(); }
|
long int getIvaPos() { return c_rmoviva->cursor()->pos(); }
|
||||||
TRectype getIva() { return c_rmoviva->cursor()->curr(); }
|
TRectype getIva() { return c_rmoviva->cursor()->curr(); }
|
||||||
int next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TString& codcf); // Legge tutto il prossimo movimento, in importi mette per ogni codiva la somma
|
int next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TString& codcf, TString& ocfpi); // Legge tutto il prossimo movimento, in importi mette per ogni codiva la somma
|
||||||
|
|
||||||
int updateFilters(const char tipocf, const long codcf, TDate dal, TDate al, int cod = toSend);
|
int updateFilters(const char tipocf, const long codcf, TDate dal, TDate al, int cod = toSend);
|
||||||
};
|
};
|
||||||
@ -197,6 +202,7 @@ protected:
|
|||||||
TRecnotype nuovo_progr() const;
|
TRecnotype nuovo_progr() const;
|
||||||
void changeInvio(TString tipocf, TString codcf, TString numdoc, TString invio) const;
|
void changeInvio(TString tipocf, TString codcf, TString numdoc, TString invio) const;
|
||||||
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 openJava();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void setFilterChanged() { _filter_changed = true; }
|
void setFilterChanged() { _filter_changed = true; }
|
||||||
@ -212,7 +218,7 @@ public:
|
|||||||
// Controllo tutti i records
|
// Controllo tutti i records
|
||||||
bool checkAll();
|
bool checkAll();
|
||||||
// Testo validità record
|
// Testo validità record
|
||||||
bool checkRec(TPrinter* stampa, TToken_string rec);
|
bool checkRec(TPrinter* stampa, TToken_string& rec);
|
||||||
// Controllo che siano presenti records
|
// Controllo che siano presenti records
|
||||||
bool checkNotEmpty();
|
bool checkNotEmpty();
|
||||||
// Controllo finale prima di inviare il tutto, se ci sono fatture
|
// Controllo finale prima di inviare il tutto, se ci sono fatture
|
||||||
@ -268,6 +274,7 @@ protected:
|
|||||||
bool show_log();
|
bool show_log();
|
||||||
bool syncronizeDB();
|
bool syncronizeDB();
|
||||||
bool createDB();
|
bool createDB();
|
||||||
|
bool copySSA();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
|
@ -166,27 +166,27 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case A_TIPOCF:
|
case A_TIPOCF:
|
||||||
case A_CODCF:
|
case A_CODCF:
|
||||||
case A_OCFPI:
|
case A_OCFPI:
|
||||||
{
|
{
|
||||||
if(e != fe_modify) break;
|
if(e != fe_modify) break;
|
||||||
TString tipocf, codcf;
|
// Leggo dal clifo
|
||||||
// Controllo se è un cliente occasionale
|
TString tipocf, codcf, ocfpi;
|
||||||
tipocf = "O";
|
tipocf = o.mask().get(A_TIPOCF);
|
||||||
codcf = o.mask().get(A_OCFPI);
|
codcf = o.mask().get(A_CODCF);
|
||||||
if(codcf.empty())
|
ocfpi = o.mask().get(A_OCFPI);
|
||||||
{
|
TRectype app = getCli(tipocf, codcf, ocfpi);
|
||||||
tipocf = o.mask().get(A_TIPOCF);
|
|
||||||
codcf = o.mask().get(A_CODCF);
|
|
||||||
}
|
|
||||||
TRectype app = getCli(tipocf, codcf);
|
|
||||||
o.mask().set(A_RAGSOC, app.get("RAGSOC"));
|
o.mask().set(A_RAGSOC, app.get("RAGSOC"));
|
||||||
o.mask().set(A_RFSO, app.get("CODRFSO"));
|
o.mask().set(A_RFSO, app.get("CODRFSO"));
|
||||||
o.mask().set(A_RAGSOCRFSO, getRFSO(app.get("CODRFSO")));
|
o.mask().set(A_RAGSOCRFSO, getRFSO(app.get("CODRFSO")));
|
||||||
o.mask().set(A_PAIV, app.get("PAIV"));
|
o.mask().set(A_PAIV, app.get("PAIV"));
|
||||||
o.mask().set(A_COFI, app.get("COFI"));
|
o.mask().set(A_COFI, app.get("COFI"));
|
||||||
|
|
||||||
|
// Abilito se il cliente è occasionale
|
||||||
|
o.mask().enable(A_OCFPI, app.get_bool("OCCAS"));
|
||||||
|
|
||||||
// Controllo autofattura
|
// Controllo autofattura
|
||||||
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
||||||
TString piva = cache().get(LF_ANAG, key, "PAIV");
|
TString piva = cache().get(LF_ANAG, key, "PAIV");
|
||||||
@ -196,6 +196,7 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
o.mask().set(A_AUTOFATT, "X");
|
o.mask().set(A_AUTOFATT, "X");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case DLG_SAVEREC:
|
case DLG_SAVEREC:
|
||||||
if(e == fe_button)
|
if(e == fe_button)
|
||||||
saveAll();
|
saveAll();
|
||||||
@ -257,14 +258,26 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return error_box(FR("Errore di cancellazione: %d"), err);
|
return error_box(FR("Errore di cancellazione: %d"), err);
|
||||||
}
|
}
|
||||||
// In qualsiasi caso elimino sta riga
|
// In qualsiasi caso elimino sta riga
|
||||||
TSheet_field& s = o.mask().sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
TToken_string& row = s.row(jolly);
|
// Vado a cercare la riga
|
||||||
row.destroy(jolly);
|
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
||||||
|
{
|
||||||
|
long thisProg;
|
||||||
|
TString thisAlq;
|
||||||
|
strarr->get(_numero, thisProg);
|
||||||
|
strarr->get(_aliquota, thisAlq);
|
||||||
|
if(thisProg == progr && thisAlq == codalq) break;
|
||||||
|
}
|
||||||
|
sheet.destroy(r); // Aggiorna in automatico
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return error_box(TR("Riga non cancellabile"));
|
return error_box(TR("Riga non cancellabile"));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case DLG_EMAIL:
|
||||||
|
if(e == fe_button)
|
||||||
|
openJava();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -295,6 +308,27 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TTrFa_mask::openJava()
|
||||||
|
{
|
||||||
|
TFilename tmp;
|
||||||
|
tmp = SPESOMETROBASE "\\ModuliSirio.jar";
|
||||||
|
tmp.make_absolute_path();
|
||||||
|
|
||||||
|
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
|
||||||
|
DIRECTORY new_dir; xvt_fsys_convert_str_to_dir(tmp.path(), &new_dir);
|
||||||
|
xvt_fsys_set_dir(&new_dir);
|
||||||
|
const bool good = goto_url(tmp);
|
||||||
|
if (good)
|
||||||
|
{
|
||||||
|
xvt_sys_sleep(3000);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
|
||||||
|
}
|
||||||
|
xvt_fsys_set_dir(&old_dir);
|
||||||
|
}
|
||||||
|
|
||||||
void TTrFa_mask::loadConfig()
|
void TTrFa_mask::loadConfig()
|
||||||
{
|
{
|
||||||
// Rilevo i tipi scelti
|
// Rilevo i tipi scelti
|
||||||
@ -326,6 +360,7 @@ bool TTrFa_mask::saveAll()
|
|||||||
TSheet_field& sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
//TString_array& strarr = sheet.rows_array();
|
//TString_array& strarr = sheet.rows_array();
|
||||||
TString mod = "";
|
TString mod = "";
|
||||||
|
TLocalisamfile mov(LF_MOV);
|
||||||
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
FOR_EACH_SHEET_ROW(sheet, r, strarr)
|
||||||
{
|
{
|
||||||
strarr->get(_forzata, mod);
|
strarr->get(_forzata, mod);
|
||||||
@ -345,6 +380,12 @@ bool TTrFa_mask::saveAll()
|
|||||||
if(!ok)
|
if(!ok)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// Salvo il valore di invio se è stato modificato
|
||||||
|
else if(strcmp(strarr->get(_invio), "X") != 0)
|
||||||
|
{
|
||||||
|
TRectype rmov = cache().get(LF_MOV, strarr->get(_numero));
|
||||||
|
mov.rewrite(rmov);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -401,7 +442,7 @@ inline void printError(TPrinter* stampa, TString movimento, TString documento, T
|
|||||||
stampa->print(riga);
|
stampa->print(riga);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string rec)
|
bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string& rec)
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
TString numMov = rec.get(_numero), numDoc = rec.get(_numdoc);
|
TString numMov = rec.get(_numero), numDoc = rec.get(_numdoc);
|
||||||
@ -438,17 +479,8 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string rec)
|
|||||||
coderr << "3;";
|
coderr << "3;";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controllo Stato ***********************************************************************************
|
|
||||||
/*
|
|
||||||
TRectype clifo = getCli(rec.get(_tipocf), rec.get(_codcf));
|
|
||||||
if(clifo.get("STATOCF") == "" &&
|
|
||||||
*/
|
|
||||||
// Flaggo il record con i messaggi di errore
|
// Flaggo il record con i messaggi di errore
|
||||||
if(!ok)
|
rec.add(coderr, _coderr); // Sempre potrebbero esserci errori non bloccanti
|
||||||
{
|
|
||||||
rec.add("E", _invio);
|
|
||||||
rec.add(coderr, _coderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
@ -499,6 +531,8 @@ void TTrFa_mask::theFinalCheckDown()
|
|||||||
cliDocs.add(key, newNumero);
|
cliDocs.add(key, newNumero);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Forzo l'aggiornamento dello sheet
|
||||||
|
sfield(F_RIGHE).force_update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TTrFa_mask::flagRow(int nrow, TString flag)
|
void TTrFa_mask::flagRow(int nrow, TString flag)
|
||||||
@ -549,7 +583,6 @@ void TTrFa_mask::load_sheet()
|
|||||||
TTrFa_cursors c;
|
TTrFa_cursors c;
|
||||||
|
|
||||||
TSheet_field& sheet = sfield(F_RIGHE);
|
TSheet_field& sheet = sfield(F_RIGHE);
|
||||||
TString_array& strarr = sheet.rows_array();
|
|
||||||
|
|
||||||
sheet.hide(); // Nascondo lo sheet per guadagnare un 20% di velocità di caricamento, le ottimizzazioni da PRO!
|
sheet.hide(); // Nascondo lo sheet per guadagnare un 20% di velocità di caricamento, le ottimizzazioni da PRO!
|
||||||
if(!sheet.empty())
|
if(!sheet.empty())
|
||||||
@ -558,14 +591,14 @@ void TTrFa_mask::load_sheet()
|
|||||||
int items = c.updateFilters(tipo, codice, dal, al, get_int(F_FATTSEL));
|
int items = c.updateFilters(tipo, codice, dal, al, get_int(F_FATTSEL));
|
||||||
for(bool ok = true; items > 0 && ok;)
|
for(bool ok = true; items > 0 && ok;)
|
||||||
{
|
{
|
||||||
TString tipocf, codcf;
|
TString tipocf, codcf, ocfpi;
|
||||||
int err = c.next(recimposte, ok, tipocf, codcf);
|
int err = c.next(recimposte, ok, tipocf, codcf, ocfpi);
|
||||||
// Carico i clienti
|
// Carico i clienti
|
||||||
TRectype cli = getCli(tipocf, codcf);
|
TRectype cli = getCli(tipocf, codcf, ocfpi);
|
||||||
|
|
||||||
FOR_EACH_ASSOC_OBJECT(recimposte, h, iva, rec)
|
FOR_EACH_ASSOC_OBJECT(recimposte, h, iva, rec)
|
||||||
{
|
{
|
||||||
TToken_string* row = new TToken_string;
|
TToken_string& row = sheet.row(-1);
|
||||||
TRectype movimento = *(TRectype*)rec;
|
TRectype movimento = *(TRectype*)rec;
|
||||||
|
|
||||||
// Controllo che sia un tipo documento da leggere
|
// Controllo che sia un tipo documento da leggere
|
||||||
@ -575,27 +608,27 @@ void TTrFa_mask::load_sheet()
|
|||||||
* basta settare i valori negli enum e lo sheet
|
* basta settare i valori negli enum e lo sheet
|
||||||
*/
|
*/
|
||||||
TRectype isCust = getTrasFatt(movimento.get("NUMREG"), iva);
|
TRectype isCust = getTrasFatt(movimento.get("NUMREG"), iva);
|
||||||
|
|
||||||
row->add(isCust.get_bool("TFINVIO") ? "X" : "", _spedita); // Spedita
|
row.add(isCust.get("TFINVIO") == "I", _spedita); // Spedita
|
||||||
row->add("X"); // Da spedire, sempre!
|
row.add("X"); // Da spedire, sempre!
|
||||||
row->add(isCust.full() ? "X" : "", _forzata); // Modificato
|
row.add(isCust.full() ? "X" : "", _forzata); // Modificato
|
||||||
row->add(movimento.get_long("NUMREG"), _numero); // Numero registrazione
|
row.add(movimento.get_long("NUMREG"), _numero); // Numero registrazione
|
||||||
row->add(movimento.get_date("DATAREG"), _datareg); // Data Registrazione
|
row.add(movimento.get_date("DATAREG"), _datareg); // Data Registrazione
|
||||||
row->add(movimento.get("TIPO"), _tipocf); // Tipo Cli/For
|
row.add(movimento.get("TIPO"), _tipocf); // Tipo Cli/For
|
||||||
row->add(movimento.get("CODCF"), _codcf); // Codice Cli/For
|
row.add(movimento.get("CODCF"), _codcf); // Codice Cli/For
|
||||||
row->add(movimento.get("OCCAS"), _occas); // Codice Occasionale
|
row.add(movimento.get("OCCAS"), _occas); // Codice Occasionale
|
||||||
row->add(cli.get("RAGSOC"), _ragsoc); // Ragione sociale
|
row.add(cli.get("RAGSOC"), _ragsoc); // Ragione sociale
|
||||||
row->add(cli.get("CODRFSO"), _rfso); // Codice RF/SO
|
row.add(cli.get("CODRFSO"), _rfso); // Codice RF/SO
|
||||||
row->add(getRFSO(cli.get("CODRFSO")), _ragsocrfso); // Ragione Sociale RF/SO
|
row.add(getRFSO(cli.get("CODRFSO")), _ragsocrfso); // Ragione Sociale RF/SO
|
||||||
row->add(movimento.get("TIPODOC"), _codnum); // Tipo documento
|
row.add(movimento.get("TIPODOC"), _codnum); // Tipo documento
|
||||||
row->add(movimento.get("NUMDOC"), _numdoc); // Numero documento
|
row.add(movimento.get("NUMDOC"), _numdoc); // Numero documento
|
||||||
row->add(movimento.get_date("DATADOC"), _datadoc); // Data documento
|
row.add(movimento.get_date("DATADOC"), _datadoc); // Data documento
|
||||||
row->add(natura(iva), _natura); // NATURA!
|
row.add(natura(iva), _natura); // NATURA!
|
||||||
row->add(iva, _aliquota); // Codice aliquota!
|
row.add(iva, _aliquota); // Codice aliquota!
|
||||||
row->add(findDetraib(movimento.get("TIPODET")), _detraibile); // Detraibilità
|
row.add(findDetraib(movimento.get("TIPODET")), _detraibile); // Detraibilità
|
||||||
row->add(movimento.get_real("IMPONIBILE"), _imponibile); // Imponibile
|
row.add(movimento.get_real("IMPONIBILE"), _imponibile); // Imponibile
|
||||||
row->add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta
|
row.add(movimento.get_real("IMPOSTA"), _importoIVA); // Imposta
|
||||||
row->add(revCharge(movimento.get("NUMREG")), _reverse); // Rev.Charge
|
row.add(revCharge(movimento.get("NUMREG")), _reverse); // Rev.Charge
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Possono esistere movimenti custom dove il cliente ha una partita IVA propria
|
* Possono esistere movimenti custom dove il cliente ha una partita IVA propria
|
||||||
@ -604,18 +637,17 @@ void TTrFa_mask::load_sheet()
|
|||||||
*/
|
*/
|
||||||
if(movimento.get("AUTOFATT") == "X" || pivaDitta == cli.get("PAIV")) // Se è un autofattura
|
if(movimento.get("AUTOFATT") == "X" || pivaDitta == cli.get("PAIV")) // Se è un autofattura
|
||||||
{
|
{
|
||||||
row->add("X", _autofatt); // AutoFatt
|
row.add("X", _autofatt); // AutoFatt
|
||||||
row->add(pivaDitta, _paiv); // P.IVA
|
row.add(pivaDitta, _paiv); // P.IVA
|
||||||
row->add(cofiDitta, _codfis); // Codice Fiscale
|
row.add(cofiDitta, _codfis); // Codice Fiscale
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
row->add("", _autofatt); // AutoFatt
|
row.add("", _autofatt); // AutoFatt
|
||||||
row->add(cli.get("PAIV"), _paiv); // P.IVA
|
row.add(cli.get("PAIV"), _paiv); // P.IVA
|
||||||
row->add(cli.get("COFI"), _codfis); // Codice Fiscale
|
row.add(cli.get("COFI"), _codfis); // Codice Fiscale
|
||||||
}
|
}
|
||||||
|
sheet.enable_cell(sheet.items()-1, _occas, movimento.get("OCCAS").full());
|
||||||
strarr.add(row);
|
|
||||||
}
|
}
|
||||||
recimposte.destroy();
|
recimposte.destroy();
|
||||||
}
|
}
|
||||||
|
@ -13,17 +13,17 @@ TTrFa_cursors::~TTrFa_cursors()
|
|||||||
delete c_trasfatt;
|
delete c_trasfatt;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TTrFa_cursors::next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TString& codcf)
|
int TTrFa_cursors::next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TString& codcf, TString& ocfpi)
|
||||||
{
|
{
|
||||||
// Azzero recimposte
|
// Azzero recimposte
|
||||||
recimposte.destroy();
|
recimposte.destroy();
|
||||||
// Return code
|
// Return code
|
||||||
return_code err;
|
return_code err;
|
||||||
// Record
|
// Record
|
||||||
TRectype record = _next(err, tipocf, codcf);
|
TRectype record = _next(err, tipocf, codcf, ocfpi);
|
||||||
if(err == eof)
|
if(err == eof)
|
||||||
{
|
{
|
||||||
record = _nextCust(err, tipocf, codcf);
|
record = _nextCust(err, tipocf, codcf, ocfpi);
|
||||||
}
|
}
|
||||||
while(err < nextmov)
|
while(err < nextmov)
|
||||||
{
|
{
|
||||||
@ -44,7 +44,7 @@ int TTrFa_cursors::next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TSt
|
|||||||
recimposte.add(record.get("CODIVA"), record);
|
recimposte.add(record.get("CODIVA"), record);
|
||||||
}
|
}
|
||||||
if(err == foundidcust) break;
|
if(err == foundidcust) break;
|
||||||
record = _next(err, tipocf, codcf);
|
record = _next(err, tipocf, codcf, ocfpi);
|
||||||
}
|
}
|
||||||
ok = err != eofcust;
|
ok = err != eofcust;
|
||||||
return err;
|
return err;
|
||||||
@ -53,7 +53,7 @@ int TTrFa_cursors::next(TAssoc_array& recimposte, bool& ok, TString& tipocf, TSt
|
|||||||
/*
|
/*
|
||||||
* Questa funzione precarica un array associativo con il movimento diviso per codiva e lo ritorna
|
* Questa funzione precarica un array associativo con il movimento diviso per codiva e lo ritorna
|
||||||
*/
|
*/
|
||||||
TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf)
|
TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi)
|
||||||
{
|
{
|
||||||
TString numMov = c_rmoviva->get("23.NUMREG").as_string();
|
TString numMov = c_rmoviva->get("23.NUMREG").as_string();
|
||||||
// Record di ritorno
|
// Record di ritorno
|
||||||
@ -62,17 +62,9 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
|||||||
if(_newMov)
|
if(_newMov)
|
||||||
{
|
{
|
||||||
_newMov = false;
|
_newMov = false;
|
||||||
// Se è un cliente occasionale passo "O"
|
tipocf = c_rmoviva->get("23.TIPO").as_string();
|
||||||
if(c_rmoviva->get("23.OCFPI").as_string() != "")
|
codcf = c_rmoviva->get("23.CODCF").as_string();
|
||||||
{
|
ocfpi = c_rmoviva->get("23.OCFPI").as_string();
|
||||||
tipocf = "O";
|
|
||||||
codcf = c_rmoviva->get("23.OCFPI").as_string();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tipocf = c_rmoviva->get("23.TIPO").as_string();
|
|
||||||
codcf = c_rmoviva->get("23.CODCF").as_string();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -131,7 +123,7 @@ TRectype TTrFa_cursors::_next(return_code& code, TString& tipocf, TString& codcf
|
|||||||
return retRec;
|
return retRec;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype TTrFa_cursors::_nextCust(return_code& code, TString& tipocf, TString& codcf)
|
TRectype TTrFa_cursors::_nextCust(return_code& code, TString& tipocf, TString& codcf, TString& ocfpi)
|
||||||
{
|
{
|
||||||
bool ok;
|
bool ok;
|
||||||
// Preparo il nuovo cursore
|
// Preparo il nuovo cursore
|
||||||
@ -146,6 +138,7 @@ TRectype TTrFa_cursors::_nextCust(return_code& code, TString& tipocf, TString& c
|
|||||||
}
|
}
|
||||||
tipocf = c_trasfatt->get("TIPO").as_string();
|
tipocf = c_trasfatt->get("TIPO").as_string();
|
||||||
codcf = c_trasfatt->get("CODCF").as_string();
|
codcf = c_trasfatt->get("CODCF").as_string();
|
||||||
|
ocfpi = c_trasfatt->get("OCFPI").as_string();
|
||||||
code = ok ? foundidcust : eofcust;
|
code = ok ? foundidcust : eofcust;
|
||||||
return c_trasfatt->cursor()->curr();
|
return c_trasfatt->cursor()->curr();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user