Merge branch 'R_10_00' of http://10.65.20.33/sirio/CAMPO/campo into R_10_00
This commit is contained in:
commit
6e7d8ab89a
3
cd/test/cg0738.txt
Normal file
3
cd/test/cg0738.txt
Normal file
@ -0,0 +1,3 @@
|
||||
cg2100c.msk
|
||||
|
||||
Tolta obbligatorietà fornitore in bolla doganale
|
94
cd/test/cg0738a.ini
Normal file
94
cd/test/cg0738a.ini
Normal file
@ -0,0 +1,94 @@
|
||||
[Main]
|
||||
Demo=0
|
||||
|
||||
[cg1]
|
||||
Edit_23 = cg2 -0
|
||||
File(232) = cg2100c.msk|X
|
||||
Patch = 0738
|
||||
Versione = 21511200
|
||||
|
||||
[cg99]
|
||||
Kill(0) = bastscc.msk|x
|
||||
Kill(1) = bastndo.rep|x
|
||||
Kill(2) = bastarb.rep|x
|
||||
Kill(3) = bastcco.rep|x
|
||||
Kill(4) = batbpor.msk|x
|
||||
Kill(5) = bastzon.msk|x
|
||||
Kill(6) = bastmsp.msk|x
|
||||
Kill(7) = bastcve.rep|x
|
||||
Kill(8) = bastpdb.msk|x
|
||||
Kill(9) = batbpdb.msk|x
|
||||
Kill(10) = bastver.msk|x
|
||||
Kill(11) = batbcco.msk|x
|
||||
Kill(12) = batbntb.msk|x
|
||||
Kill(13) = batbind.msk|x
|
||||
Kill(14) = batbdpn.msk|x
|
||||
Kill(15) = batbarb.msk|x
|
||||
Kill(16) = batbleg.msk|x
|
||||
Kill(17) = bastcam.rep|x
|
||||
Kill(18) = bastnot.msk|x
|
||||
Kill(19) = bastpor.rep|x
|
||||
Kill(20) = bastcco.msk|x
|
||||
Kill(21) = batblia.msk|x
|
||||
Kill(22) = batbvet.msk|x
|
||||
Kill(23) = bastcve.msk|x
|
||||
Kill(24) = bastesc.msk|x
|
||||
Kill(25) = batbins.msk|x
|
||||
Kill(26) = batblia.msk|x
|
||||
Kill(27) = bastpor.msk|x
|
||||
Kill(28) = batbcve.msk|x
|
||||
Kill(29) = batbdel.msk|x
|
||||
Kill(30) = bastleg.msk|x
|
||||
Kill(31) = bastcam.msk|x
|
||||
Kill(32) = bastzon.rep|x
|
||||
Kill(33) = batbscc.msk|x
|
||||
Kill(34) = bastdpn.rep|x
|
||||
Kill(35) = batbcam.msk|x
|
||||
Kill(36) = bastdpn.msk|x
|
||||
Kill(37) = batbesc.msk|x
|
||||
Kill(38) = bastvet.rep|x
|
||||
Kill(39) = bastcfi.msk|x
|
||||
Kill(40) = bastndo.msk|x
|
||||
Kill(41) = bastarb.msk|x
|
||||
Kill(42) = batbreg.msk|x
|
||||
Kill(43) = cgtbcon.msk|x
|
||||
Kill(44) = batbnot.msk|x
|
||||
Kill(45) = batbmsp.msk|x
|
||||
Kill(46) = bastreg.msk|x
|
||||
Kill(47) = batbzon.msk|x
|
||||
Kill(48) = bastesc.rep|x
|
||||
Kill(49) = bastntb.rep|x
|
||||
Kill(50) = bastver.rep|x
|
||||
Kill(51) = bastreg.rep|x
|
||||
Kill(52) = bastpdb.rep|x
|
||||
Kill(53) = batbcfi.msk|x
|
||||
Kill(54) = bastvet.msk|x
|
||||
Kill(55) = bastntb.msk|x
|
||||
Kill(56) = bastnot.rep|x
|
||||
Kill(57) = batbinl.msk|x
|
||||
Kill(58) = bastmsp.rep|x
|
||||
Kill(59) = bastivd.msk|x
|
||||
Kill(60) = batblbu.msk|x
|
||||
Kill(61) = batbtra.msk|x
|
||||
Kill(62) = bastcfi.rep|x
|
||||
Kill(63) = batbivd.msk|x
|
||||
Kill(64) = bastleg.rep|x
|
||||
Kill(65) = bastscc.rep|x
|
||||
Kill(66) = batbtit.msk|x
|
||||
Kill(67) = bastivd.rep|x
|
||||
Kill(68) = batbver.msk|x
|
||||
Kill(69) = batbndo.msk|x
|
||||
|
||||
[cg]
|
||||
Data = 19-03-2019
|
||||
Descrizione = Contabilita' Generale
|
||||
Dischi = 1
|
||||
Moduli = ba
|
||||
OEM =
|
||||
Patch = 738
|
||||
PostProcess = bainst -0 CG
|
||||
PreProcess =
|
||||
Prezzo(1) =
|
||||
Prezzo(2) =
|
||||
Versione = 21511200
|
||||
|
BIN
cd/test/cg0738a1.zip
Normal file
BIN
cd/test/cg0738a1.zip
Normal file
Binary file not shown.
@ -1,3 +1,5 @@
|
||||
fp0.exe
|
||||
|
||||
Corretta lettura campi custom, si è presentato un errore con la nuova gestione "nascondi sconti in fattura", veniva letto sempre il campo di default e non passava per la funzione prezzo()
|
||||
- Corretta lettura campi custom, si è presentato un errore con la nuova gestione "nascondi sconti in fattura", veniva letto sempre il campo di default e non passava per la funzione prezzo()
|
||||
- Messo una volta sola denominazione in scheda errori fornitori
|
||||
- Sistemato ciclo per chiamata e creazione files.ini
|
Binary file not shown.
6
cd/test/tf0738.txt
Normal file
6
cd/test/tf0738.txt
Normal file
@ -0,0 +1,6 @@
|
||||
tf0.exe
|
||||
tf0100a.msk
|
||||
|
||||
- Tolto controllo fornitore bolla doganale
|
||||
- Sistemati filtri maschera spesometro
|
||||
- Invertito ordine "Sogg. Fatt. Elettr" e Esteri in fornitori (era diverso rispetto ai clienti)
|
20
cd/test/tf0738a.ini
Normal file
20
cd/test/tf0738a.ini
Normal file
@ -0,0 +1,20 @@
|
||||
[Main]
|
||||
Demo=0
|
||||
|
||||
[tf1]
|
||||
File(0) = tf0.exe|X
|
||||
File(1) = tf0100a.msk|X
|
||||
Patch = 738
|
||||
Versione = 21511200
|
||||
|
||||
[tf]
|
||||
Data = 19-03-2019
|
||||
Descrizione = Trasferimento fatture
|
||||
Dischi = 1
|
||||
Moduli = cg
|
||||
OEM =
|
||||
Patch = 738
|
||||
PostProcess =
|
||||
PreProcess =
|
||||
Versione = 21511200
|
||||
|
BIN
cd/test/tf0738a1.zip
Normal file
BIN
cd/test/tf0738a1.zip
Normal file
Binary file not shown.
@ -369,7 +369,7 @@ BEGIN
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
OUTPUT F_BOLLACODCLI CODCF
|
||||
OUTPUT F_BOLLARAGCLI RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Fornitore associato a bolla doganale assente"
|
||||
ADD RUN cg0 -1
|
||||
FLAGS ""
|
||||
@ -388,7 +388,7 @@ BEGIN
|
||||
DISPLAY "Codice Fiscale@16" COFI
|
||||
OUTPUT F_BOLLACODCLI CODCF
|
||||
OUTPUT F_BOLLARAGCLI RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
CHECKTYPE NORMAL
|
||||
ADD RUN cg0 -1
|
||||
FLAGS ""
|
||||
END
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "sheet.h"
|
||||
#include "execp.h"
|
||||
#include "dongle.h"
|
||||
#include <map>
|
||||
|
||||
enum
|
||||
{
|
||||
@ -28,13 +29,27 @@ enum { filtri = 0, elenco_fe = 1, elenco_err = 2 }; // Enum per bottoni toolbar
|
||||
class TPassive_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool _filter_changed;
|
||||
TFilename tmp_dir;
|
||||
struct TForn_err
|
||||
{
|
||||
int forn_code;
|
||||
int fatt_err;
|
||||
};
|
||||
|
||||
std::map<TString, TForn_err> _list_fatt_err;
|
||||
|
||||
void set_filter_changed();
|
||||
void select_all(int sheet_field);
|
||||
|
||||
// Tasto nuovo: apre nuovo fornitore valorizzando già i dati dalla fattura
|
||||
void new_forn();
|
||||
// Tasto aggiorna: aggiorna cliente che non corrisponde.
|
||||
void aggiorna_forn();
|
||||
void salva_for() const;
|
||||
void clean_cg0(const TString& filename) const;
|
||||
void run_cg0(const TString& filename) const;
|
||||
|
||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly) override;
|
||||
void next_page(int p) override;
|
||||
// Elenco dei protocolli selezionati
|
||||
@ -46,24 +61,15 @@ protected:
|
||||
// Aggiunge i protocolli che sono già presenti per le fatture nel db alla tabellina per il filtro
|
||||
void aggiungi_prot() const;
|
||||
void init();
|
||||
|
||||
void load_all_fields();
|
||||
|
||||
TToken_string _forn_code;
|
||||
TToken_string _list_fatt_err;
|
||||
bool _filter_changed;
|
||||
void salva_for() const;
|
||||
|
||||
public:
|
||||
void save_all_fields() const;
|
||||
|
||||
TPassive_mask() : TAutomask("fp0400a"), _filter_changed(true)
|
||||
{
|
||||
tmp_dir = tmp_dir.tempdir();
|
||||
load_all_fields();
|
||||
_forn_code = "";
|
||||
_forn_code.separator('|');
|
||||
_list_fatt_err = "";
|
||||
_list_fatt_err.separator('|');
|
||||
}
|
||||
};
|
||||
|
||||
@ -119,8 +125,7 @@ void TPassive_mask::fill()
|
||||
"ORDER BY PZ_ANNOPROT DESC, PZ_TIPOPROT ASC, PZ_NUMPROT DESC";
|
||||
fp_db().sq_set_exec(query, false);
|
||||
|
||||
_forn_code = "";
|
||||
_list_fatt_err = "";
|
||||
_list_fatt_err.clear();
|
||||
while(fp_db().sq_next())
|
||||
{
|
||||
aggiungi_riga(clifo, sf, sf_err);
|
||||
@ -185,31 +190,27 @@ void TPassive_mask::aggiungi_riga(TLocalisamfile& clifo, TSheet_field& sf, TShee
|
||||
row.add(fp_db().sq_get("TIPO_SDI"));
|
||||
row.add(fp_db().sq_get("NUM_DOC"));
|
||||
// Trasformo formato data da yyyy-mm-gg a italiano
|
||||
TDate date_t(fp_db().sq_get_date("DATA_DOC"));
|
||||
row.add(date_t);
|
||||
row.add(fp_db().sq_get_date("DATA_DOC"));
|
||||
row.add(fp_db().sq_get("TOT_DOC"));
|
||||
|
||||
// Dopo aver fatto le ricerche se lo trovo lo segno e lo aggiungo, se no coloro la cella
|
||||
TString forn_str; forn_str << forn_code;
|
||||
TString nr_row; nr_row << sf.items();
|
||||
if(forn_code < 0)
|
||||
{
|
||||
_forn_code.add(forn_str);
|
||||
_list_fatt_err.add(nr_row);
|
||||
}
|
||||
|
||||
if (forn_code == 0) row.add("X");
|
||||
else row.add("");
|
||||
// Decido se mettere o meno il flag
|
||||
if (forn_code == 0)
|
||||
row.add("X");
|
||||
else
|
||||
row.add("");
|
||||
|
||||
// Valorizzo le colonne rimanenti o la tabella degli errori
|
||||
if (forn_code >= 0)
|
||||
{
|
||||
row.add(clifo.get(CLI_CODCF));
|
||||
row.add(clifo.get(CLI_RAGSOC));
|
||||
}
|
||||
else
|
||||
else if (_list_fatt_err.find(denom) == _list_fatt_err.end())
|
||||
{
|
||||
//sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_FORNITORE));
|
||||
//sf.set_back_and_fore_color(COLOR_RED, COLOR_WHITE, 2, sf.cid2index(S_RAGSOC));
|
||||
TForn_err& forn_err = _list_fatt_err[denom];
|
||||
forn_err.forn_code = forn_code;
|
||||
forn_err.fatt_err = sf.items() - 1;
|
||||
|
||||
add_row_err_forn(forn_code, sf_err, denom);
|
||||
}
|
||||
|
||||
@ -248,7 +249,7 @@ void TPassive_mask::aggiungi_prot() const
|
||||
sf_prot.force_update();
|
||||
}
|
||||
|
||||
void TPassive_mask::add_row_err_forn(int forn_code, TSheet_field& sf_err, TString& denom)
|
||||
void TPassive_mask::add_row_err_forn(const int forn_code, TSheet_field& sf_err, TString& denom)
|
||||
{
|
||||
TToken_string& row_err = sf_err.row(-1);
|
||||
row_err.add(fp_db().sq_get("COD_PAESE"), 1);
|
||||
@ -399,15 +400,31 @@ void TPassive_mask::salva_for() const
|
||||
}
|
||||
}
|
||||
|
||||
void TPassive_mask::clean_cg0(const TString& filename) const
|
||||
{
|
||||
static TString remove_string;
|
||||
remove_string.cut(0) << tmp_dir << "\\" << filename << "*.*";
|
||||
remove_files(remove_string, false);
|
||||
}
|
||||
|
||||
void TPassive_mask::run_cg0(const TString& filename) const
|
||||
{
|
||||
static TString run_string;
|
||||
run_string.cut(0) << "cg0 -1 -i" << tmp_dir << "\\" << filename << "*" << ".ini" << " /u" << user();
|
||||
TExternal_app(run_string).run();
|
||||
}
|
||||
|
||||
void TPassive_mask::new_forn()
|
||||
{
|
||||
TSheet_field& sf = sfield(F_ERR);
|
||||
TString newf = "fpnewf";
|
||||
static const TString newf = "fpnewf";
|
||||
clean_cg0(newf);
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
int cod_forn = _forn_code.get_int(nr); // Prendo codice di errore associazione fornitore
|
||||
|
||||
int n_row_elenco = _list_fatt_err.get_int(nr); // Prendo che numero di riga a cui mi riferisco in fatture
|
||||
const TString denom = row->get(sf.cid2index(S_RAGSERR));
|
||||
TForn_err& forn_err = _list_fatt_err[denom];
|
||||
const int& cod_forn = forn_err.forn_code; // Prendo codice di errore associazione fornitore
|
||||
const int& n_row_elenco = forn_err.fatt_err; // Prendo che numero di riga a cui mi riferisco in fatture
|
||||
TSheet_field& f_docs = sfield(F_DOCS); // Prendo SheetField da elenco fatture
|
||||
TToken_string& row_elenco_fatt = f_docs.row(n_row_elenco); // Prendo riga dall'elenco delle fatture
|
||||
TToken_string keys(row_elenco_fatt.get(f_docs.cid2index(S_PROKEY)), ';'); // Dalla riga leggo la chiave del db
|
||||
@ -424,7 +441,6 @@ void TPassive_mask::new_forn()
|
||||
|
||||
TString num; num.format("%04d", nr);
|
||||
TFilename newf_ini;
|
||||
TString temp_path = newf_ini.tempdir();
|
||||
newf_ini.tempdir() << "\\" << newf << num << ".ini";
|
||||
TConfig forn_conf(newf_ini, "Transaction");
|
||||
|
||||
@ -444,12 +460,10 @@ void TPassive_mask::new_forn()
|
||||
forn_conf.set("RAGGOR", "O");
|
||||
forn_conf.set("PADESTIN", row_elenco_fatt.get(sf.cid2index(S_CODSDI)));
|
||||
|
||||
TExternal_app app(TString("cg0 -1 -i") << temp_path << "\\" << newf << "*" << ".ini" << " /u" << user());
|
||||
app.run();
|
||||
row->add("", 0);
|
||||
}
|
||||
}
|
||||
|
||||
run_cg0(newf);
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
@ -457,28 +471,35 @@ void TPassive_mask::aggiorna_forn()
|
||||
{
|
||||
TSheet_field& sf = sfield(F_ERR);
|
||||
static const TString newf = "fpaggf";
|
||||
clean_cg0(newf);
|
||||
FOR_EACH_SHEET_ROW(sf, nr, row)
|
||||
{
|
||||
const int cod_forn = _forn_code.get_int(nr); // Prendo codice di errore associazione fornitore
|
||||
|
||||
const int n_row_elenco = _list_fatt_err.get_int(nr); // Prendos che numero di riga a cui mi riferisco in fatture
|
||||
const TString denom = row->get(sf.cid2index(S_RAGSERR));
|
||||
TForn_err& forn_err = _list_fatt_err[denom];
|
||||
const int& cod_forn = forn_err.forn_code; // Prendo codice di errore associazione fornitore
|
||||
const int& n_row_elenco = forn_err.fatt_err; // Prendo che numero di riga a cui mi riferisco in fatture
|
||||
TSheet_field& f_docs = sfield(F_DOCS); // Prendo SheetField da elenco fatture
|
||||
TToken_string& row_elenco_fatt = f_docs.row(n_row_elenco); // Prendo riga dall'elenco delle fatture
|
||||
|
||||
if (row->starts_with("X") && cod_forn == no_match_cf)
|
||||
{
|
||||
TLocalisamfile clifo(LF_CLIFO);
|
||||
bool is_not_gruppo_iva = false;
|
||||
clifo.setkey(5);
|
||||
clifo.put(CLI_TIPOCF, 'F');
|
||||
clifo.put(CLI_STATOPAIV, row->get(1));
|
||||
clifo.put(CLI_PAIV, row->get(2));
|
||||
is_not_gruppo_iva = (clifo.read() == NOERR && clifo.get(CLI_ALLEG) != "G");
|
||||
if(is_not_gruppo_iva)
|
||||
clifo.put(CLI_STATOPAIV, row->get(sf.cid2index(S_STATOERR)));
|
||||
clifo.put(CLI_PAIV, row->get());
|
||||
if(clifo.read() != NOERR)
|
||||
{
|
||||
TString msg = "Impossibile trovare il fornitore scelto ";
|
||||
msg << row->get(sf.cid2index(S_STATOERR)) << " " << row->get();
|
||||
warning_box(msg);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(clifo.get(CLI_ALLEG) != "G") // Controllo che non sia un gruppo IVA
|
||||
{
|
||||
TString num; num.format("%04d", nr);
|
||||
TFilename newf_ini;
|
||||
TString temp_path = newf_ini.tempdir();
|
||||
newf_ini.tempdir() << "\\" << newf << num << ".ini";
|
||||
TConfig forn_conf(newf_ini, "Transaction");
|
||||
|
||||
@ -487,15 +508,13 @@ void TPassive_mask::aggiorna_forn()
|
||||
forn_conf.set_paragraph("20");
|
||||
forn_conf.set("TIPOCF", "F");
|
||||
forn_conf.set("COFI", row->get(sf.cid2index(S_CODFIERR)));
|
||||
forn_conf.set("CODCF", row_elenco_fatt.get(sf.cid2index(S_FORNITORE)));
|
||||
forn_conf.set("CODCF", clifo.get(CLI_CODCF));
|
||||
|
||||
TExternal_app app(TString("cg0 -1 -i") << temp_path << "\\" << newf << "*" << ".ini" << " /u" << user());
|
||||
message_box(TString("Sto andando a modificare il codice fiscale del fornitore:\n") << row->get(sf.cid2index(S_RAGSERR)));
|
||||
app.run();
|
||||
row->add("", 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
run_cg0(newf);
|
||||
sf.force_update();
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@
|
||||
#define S_PARIVA 111
|
||||
#define S_CODFISC 112
|
||||
#define S_ATTACH 113
|
||||
#define S_CODSDI 114
|
||||
#define S_CODSDI 114
|
||||
#define S_RAGXML 115
|
||||
#define S_NPROT 116
|
||||
#define S_PROKEY 117
|
||||
|
@ -287,12 +287,6 @@ inline const char * no_special(const char a)
|
||||
return "";
|
||||
}
|
||||
|
||||
bool bd2017()
|
||||
{
|
||||
static TDate today = TDate(TODAY), last_day = TDate(31,12,2017);
|
||||
return today <= last_day;
|
||||
}
|
||||
|
||||
TTrFa_mask& msk()
|
||||
{
|
||||
static TTrFa_mask* msk = nullptr;
|
||||
@ -1110,19 +1104,19 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
static TString checkClifo; checkClifo.cut(0);
|
||||
|
||||
// Per le bolle doganali devo fare sempre questo giro
|
||||
bool foundBolla = strcmp(strarr->get(_codnum),"BD") == 0, foundBollaCli = false;
|
||||
bool found_bolla = strcmp(strarr->get(_codnum),"BD") == 0, found_bolla_cli = false;
|
||||
static TString cfbolladog;
|
||||
if(foundBolla)
|
||||
if(found_bolla)
|
||||
{
|
||||
// Attenzione! Se è una riga inserita a mano dall'utente prendo lo stesso il fornitore della riga!
|
||||
cfbolladog = strarr->get_int(_numero) < MOV_CUSTOM ? cache().get(LF_MOV, strarr->get_long(_numero), "CFBOLLADOG") : strarr->get(_codcf);
|
||||
if(!cfbolladog.blank())
|
||||
{
|
||||
foundBollaCli = true;
|
||||
found_bolla_cli = true;
|
||||
checkClifo << "F" << cfbolladog;
|
||||
}
|
||||
}
|
||||
if(!foundBollaCli)
|
||||
if(!found_bolla_cli)
|
||||
{
|
||||
static TString tempOcfpi; tempOcfpi.cut(0) << strarr->get(_occas);
|
||||
if(tempOcfpi.blank())
|
||||
@ -1150,7 +1144,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
|
||||
// Con l'uscita di questo programma è stato messo un collegamento in prima nota
|
||||
// per il fornitore a cui è riferita la bolla doganale
|
||||
if(foundBollaCli)
|
||||
if(found_bolla_cli)
|
||||
{
|
||||
r_cedeprest = getCli("F", cfbolladog, "");
|
||||
cedeprest.init(r_cedeprest);
|
||||
@ -1173,10 +1167,8 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
}
|
||||
else // Fattura normale, lascio più volte la funzione con il nome del campo per leggibilità
|
||||
{
|
||||
// Ovviamente tutte le bolle doganali fatte prima del rilascio
|
||||
// non avranno questo campo compilato e quindi dovrò passare la partita IVA "OO99999999999"
|
||||
// Controllo anche di essere in una data entro il 31/12/2017, dopo tale data sto ragionamento non è valido
|
||||
if(foundBolla && !foundBollaCli && bd2017())
|
||||
// Se la bolla doganale non ha un fornitore collegato posso passare come P.IVA OO99999999999
|
||||
if(found_bolla && !found_bolla_cli)
|
||||
{
|
||||
tff0400f.set("P4_FISCIVAPAESE", "OO");
|
||||
tff0400f.set("P4_FISCIVACOD", "99999999999");
|
||||
@ -1208,7 +1200,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
bool rsoc = cedeprest.giuridica() || (tipo == 3 || tipo == 7 || tipo == 8 || tipo == 0);
|
||||
bool privato = tipo == 6 || (cedeprest.estero() && cedeprest.fisica());
|
||||
|
||||
if(foundBolla && !foundBollaCli)
|
||||
if(found_bolla && !found_bolla_cli)
|
||||
{
|
||||
tff0400f.set("P4_ANADENOM", "Dato Assente");
|
||||
}
|
||||
@ -1271,7 +1263,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
||||
// Devo trovare rsoc e:
|
||||
// 1 - Non trovo la bolla
|
||||
// 2 - Trovo il cliente
|
||||
if(rsoc && (!foundBolla || foundBollaCli))
|
||||
if(rsoc && (!found_bolla || found_bolla_cli))
|
||||
{
|
||||
tff0400f.set("P4_ANADENOM", cedeprest.ragione_sociale());
|
||||
}
|
||||
|
@ -232,19 +232,19 @@ BEGIN
|
||||
FLAGS "H"
|
||||
END
|
||||
|
||||
BOOLEAN B_PAA_ESTERI
|
||||
BEGIN
|
||||
PROMPT 1 11 "Esteri"
|
||||
GROUP 20
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BOOLEAN B_PAA_SOG_FAT
|
||||
BEGIN
|
||||
PROMPT 1 12 "Soggetti a fatturazione elettronica"
|
||||
PROMPT 1 11 "Soggetti a fatturazione elettronica"
|
||||
GROUP 20
|
||||
END
|
||||
|
||||
BOOLEAN B_PAA_ESTERI
|
||||
BEGIN
|
||||
PROMPT 1 12 "Esteri"
|
||||
GROUP 20
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Trasferimento Fatture" 0 2 0 0
|
||||
|
@ -574,7 +574,7 @@ void TTrFa_mask::the_final_check_down() // IT'S THE FINAL CHECKDOOOOOOOWN! WE'RE
|
||||
{
|
||||
// Chiave: TIPOCF + CODCF + NUMDOC + CODIVA
|
||||
TString key; key << strarr->get_char(_tipocf) << "|" << strarr->get_int(_codcf) << "|" << strarr->get(_numdoc) << "|" << strarr->get(_aliquota);
|
||||
TToken_string newNumero; newNumero.add(r, 0); newNumero.add(strarr->get_char(_invio), 1);
|
||||
TToken_string new_numero; new_numero.add(r, 0); new_numero.add(strarr->get_char(_invio), 1);
|
||||
if(cli_docs.is_key(key))
|
||||
{
|
||||
TToken_string oldnumero = *dynamic_cast<TToken_string*>(cli_docs.objptr(key));
|
||||
@ -587,11 +587,11 @@ void TTrFa_mask::the_final_check_down() // IT'S THE FINAL CHECKDOOOOOOOWN! WE'RE
|
||||
flag_row(oldr, FLAG_NINVIO);
|
||||
}
|
||||
|
||||
cli_docs.add(key, newNumero);
|
||||
cli_docs.add(key, new_numero);
|
||||
}
|
||||
else
|
||||
{
|
||||
cli_docs.add(key, newNumero);
|
||||
cli_docs.add(key, new_numero);
|
||||
}
|
||||
}
|
||||
// Forzo l'aggiornamento dello sheet
|
||||
|
@ -79,19 +79,19 @@ const TRectype getVER(int anno, int mese)
|
||||
else
|
||||
key << mese;
|
||||
|
||||
TRectype rowRet(LF_TABCOM);
|
||||
TRectype row_ret(LF_TABCOM);
|
||||
|
||||
for(cver = 0; cver.pos() < cver.items(); ++cver)
|
||||
{
|
||||
TRectype rowVer = cver.curr();
|
||||
if(rowVer.get("CODTAB") < key)
|
||||
TRectype row_ver = cver.curr();
|
||||
if(row_ver.get("CODTAB") < key)
|
||||
{
|
||||
rowRet = rowVer;
|
||||
row_ret = row_ver;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return rowRet;
|
||||
return row_ret;
|
||||
}
|
||||
|
||||
/* Scopiazzata e divisa in due da cg4304.cpp
|
||||
@ -174,58 +174,58 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imposta_diff, real& imp
|
||||
}
|
||||
|
||||
/* Funzione per determinare il credito dell'anno precedente delle dichiarazioni precedenti */
|
||||
void calcolaCreditoPrec(real& creprec, real& creaprec, bool mensile, int anno, int mese)
|
||||
void calcola_credito_prec(real& creprec, real& creaprec, bool mensile, int anno, int mese)
|
||||
{
|
||||
// Credito anno precedente
|
||||
/* Per calcolare il credito dell'anno precedente inizio a leggere i record precedenti su IVALIQ
|
||||
* fino a quando ne trovo uno >= 0. */
|
||||
|
||||
TRectype rowLia = getLIA(anno);
|
||||
TRectype row_lia = getLIA(anno);
|
||||
if(mensile || (!mensile && ((mese - 1) % 3) == 0))
|
||||
{
|
||||
TRelation ivaLiq(LF_IVALIQ);
|
||||
TRectype from(ivaLiq.curr()); from.put("ANNO", anno); from.put("MESE", 1);
|
||||
TRelation iva_liq(LF_IVALIQ);
|
||||
TRectype from(iva_liq.curr()); from.put("ANNO", anno); from.put("MESE", 1);
|
||||
// Fino al mese precedente
|
||||
TRectype to(ivaLiq.curr()); to.put("ANNO", anno); to.put("MESE", mese - 1);
|
||||
TRectype to(iva_liq.curr()); to.put("ANNO", anno); to.put("MESE", mese - 1);
|
||||
|
||||
TCursor curLiq(&ivaLiq, "GENERATA!=\"G\"", 1, &from, &to);
|
||||
TCursor cur_liq(&iva_liq, "GENERATA!=\"G\"", 1, &from, &to);
|
||||
bool trovato = false;
|
||||
for(curLiq = 0; curLiq.pos() < curLiq.items(); ++curLiq)
|
||||
for(cur_liq = 0; cur_liq.pos() < cur_liq.items(); ++cur_liq)
|
||||
{
|
||||
TRectype rowLiq = curLiq.curr();
|
||||
if(rowLiq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso?
|
||||
TRectype row_liq = cur_liq.curr();
|
||||
if(row_liq.get_int("MESE") >= mese) break; // Perchè li prende lo stesso?
|
||||
|
||||
trovato = trovato || rowLiq.get_real("CREAPREC") > ZERO;
|
||||
creprec = rowLiq.get_real("IVAVERC");
|
||||
trovato = trovato || row_liq.get_real("CREAPREC") > ZERO;
|
||||
creprec = row_liq.get_real("IVAVERC");
|
||||
|
||||
}
|
||||
/* Se non ho trovato nessun valore positivo (i negativi senza nessun positivo prima non sono validi)
|
||||
* vado a leggere la liquidazione di quest'anno */
|
||||
if(!trovato)
|
||||
{
|
||||
creaprec = rowLia.get_real("R0");
|
||||
creaprec = row_lia.get_real("R0");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ComLiqPerIva_mask : public TAutomask
|
||||
class TCom_liq_per_iva_msk : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool mensile;
|
||||
bool _mensile;
|
||||
// Aggiunta questa variabile per specificare se è stato impostato un tipo di liquidazione.
|
||||
// In Release sembra che durante la ricerca salta l'inizializzazione e imposta prima gli altri campi
|
||||
bool initLiq;
|
||||
TRectype trueData;
|
||||
bool _init_liq;
|
||||
TRectype _true_data;
|
||||
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void extractinator();
|
||||
void checkOldValue(int field, real val);
|
||||
void check_old_value(int field, real val);
|
||||
public:
|
||||
ComLiqPerIva_mask() : TAutomask("tf0200a"), trueData(LF_IVALIQ), initLiq(false) { first_focus(F_ANNO); }
|
||||
void saveGen();
|
||||
TCom_liq_per_iva_msk() : TAutomask("tf0200a"), _true_data(LF_IVALIQ), _init_liq(false) { first_focus(F_ANNO); }
|
||||
void save_gen();
|
||||
};
|
||||
|
||||
bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
bool TCom_liq_per_iva_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
@ -241,28 +241,28 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
}
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
mensile = true;
|
||||
initLiq = true;
|
||||
_mensile = true;
|
||||
_init_liq = true;
|
||||
enable(F_MESE);
|
||||
disable(F_TRIMESTRE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mensile = false;
|
||||
initLiq = true;
|
||||
_mensile = false;
|
||||
_init_liq = true;
|
||||
disable(F_MESE);
|
||||
enable(F_TRIMESTRE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_MESE:
|
||||
if(e == fe_modify && mensile && initLiq)
|
||||
if(e == fe_modify && _mensile && _init_liq)
|
||||
set(F_TRIMESTRE, (get_int(F_MESE) - 1) / 3 + 1);
|
||||
break;
|
||||
case F_TRIMESTRE:
|
||||
if(e == fe_init && !query_mode())
|
||||
disable(F_TRIMESTRE);
|
||||
if(e == fe_modify && !mensile && initLiq && query_mode())
|
||||
if(e == fe_modify && !_mensile && _init_liq && query_mode())
|
||||
{
|
||||
set(F_MESE, get_int(F_TRIMESTRE) * 3);
|
||||
disable(F_TRIMESTRE);
|
||||
@ -290,19 +290,19 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
if(e == fe_button)
|
||||
{
|
||||
// Richiamo il programma di invio
|
||||
TExternal_app invioApp("tf0 -4");
|
||||
invioApp.run();
|
||||
TExternal_app invio_app("tf0 -4");
|
||||
invio_app.run();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DLG_SAVEREC:
|
||||
if(e != fe_init && !trueData.empty())
|
||||
trueData.write_rewrite(TLocalisamfile(LF_IVALIQ));
|
||||
if(e != fe_init && !_true_data.empty())
|
||||
_true_data.write_rewrite(TLocalisamfile(LF_IVALIQ));
|
||||
}
|
||||
|
||||
if(o.dlg() >= CAMPI_CON_BOOLEAN && o.dlg() <= F_IMPNOVER && e == fe_modify) // Se l'utente modifica manualmente uno dei campi calcolati da Campo flaggo il DB
|
||||
{
|
||||
checkOldValue(o.dlg(), get_real(o.dlg()));
|
||||
check_old_value(o.dlg(), get_real(o.dlg()));
|
||||
}
|
||||
|
||||
// Controllo sull'aggiornamento di campi collegati ad altri
|
||||
@ -324,15 +324,15 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
{
|
||||
set(F_IVADOV, ivaes - ivadet);
|
||||
set(F_IVADOVC, ZERO);
|
||||
checkOldValue(F_IVADOV, ivaes - ivadet);
|
||||
checkOldValue(F_IVADOVC, "");
|
||||
check_old_value(F_IVADOV, ivaes - ivadet);
|
||||
check_old_value(F_IVADOVC, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
set(F_IVADOV, ZERO);
|
||||
set(F_IVADOVC, (ivaes - ivadet) * -UNO);
|
||||
checkOldValue(F_IVADOV, "");
|
||||
checkOldValue(F_IVADOVC, (ivaes - ivadet) * -UNO);
|
||||
check_old_value(F_IVADOV, "");
|
||||
check_old_value(F_IVADOVC, (ivaes - ivadet) * -UNO);
|
||||
}
|
||||
}
|
||||
// IVA da versare VS a credito
|
||||
@ -354,7 +354,7 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
if(creaprec < ZERO)
|
||||
{
|
||||
real creprec = ZERO; real appcreaprec;
|
||||
calcolaCreditoPrec(creprec, appcreaprec, mensile, get_int(F_ANNO), get_int(F_MESE));
|
||||
calcola_credito_prec(creprec, appcreaprec, _mensile, get_int(F_ANNO), get_int(F_MESE));
|
||||
creaprec = appcreaprec + creaprec;
|
||||
}
|
||||
|
||||
@ -363,15 +363,15 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
{
|
||||
set(F_IVAVER, debito - credito);
|
||||
set(F_IVAVERC, ZERO);
|
||||
checkOldValue(F_IVAVER, debito - credito);
|
||||
checkOldValue(F_IVAVERC, "");
|
||||
check_old_value(F_IVAVER, debito - credito);
|
||||
check_old_value(F_IVAVERC, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
set(F_IVAVER, ZERO);
|
||||
set(F_IVAVERC, credito - debito);
|
||||
checkOldValue(F_IVAVER, "");
|
||||
checkOldValue(F_IVAVERC, credito - debito);
|
||||
check_old_value(F_IVAVER, "");
|
||||
check_old_value(F_IVAVERC, credito - debito);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -381,14 +381,14 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
|
||||
}
|
||||
|
||||
// Funzione che effettivamente estrapola i dati necessari
|
||||
void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
void TCom_liq_per_iva_msk::extractinator() // Per gli amici GTFO
|
||||
{
|
||||
/* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno
|
||||
* I dati da prelevare saranno in PRM, LIM e %LIA
|
||||
* In PRM e LIM troverò le informazioni suddivise per mese, mentre in %LIA ho l'anno di liquidazione
|
||||
*/
|
||||
int start = mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1);
|
||||
int end = mensile ? start : start + 2;
|
||||
int start = _mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1);
|
||||
int end = _mensile ? start : start + 2;
|
||||
int anno = get_int(F_ANNO);
|
||||
|
||||
// Valori da calcolare
|
||||
@ -422,7 +422,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
{
|
||||
TDate data_da(1, start, anno);
|
||||
TDate data_a(1, start, anno); data_a.set_end_month();
|
||||
bool hasIXC = gestione_IVAxCassa(data_da);
|
||||
bool has_ixc = gestione_IVAxCassa(data_da);
|
||||
|
||||
/****************************************************************************************************************
|
||||
* TOTOPATT, TOTOPATTXC, TOTOPPAS, TOTOPPASXC, IVAES, IVAESXC, IVAESDIFF,
|
||||
@ -430,43 +430,43 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
****************************************************************************************************************/
|
||||
|
||||
// Riga LIM
|
||||
const TRectype rowLim = getLIM(anno, start);
|
||||
const TRectype row_lim = getLIM(anno, start);
|
||||
|
||||
// Controllo che la liquidazione è stata effettuata, controllo da fare solo nella 12
|
||||
if (dongle().year_assist() > 2121 && (rowLim.empty() || rowLim.get_bool("B0")) && !yesno_box("Attenzione non <20> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?"))
|
||||
if (dongle().year_assist() > 2121 && (row_lim.empty() || row_lim.get_bool("B0")) && !yesno_box("Attenzione non <20> stata calcolata la liquidazione del periodo corrente, si desidera proseguire ugualmente?"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Riga LIA
|
||||
const TRectype rowLia = getLIA(anno);
|
||||
const TRectype row_lia = getLIA(anno);
|
||||
|
||||
TString queryIva = "USE RMOVIVA\n";
|
||||
queryIva << "SELECT ( " << FIELD_NAME(LF_MOV, MOV_REG) << "!=\"\")&&BETWEEN( " << FIELD_NAME(LF_MOV, MOV_DATAREG) << ",#DADATAREG,#ADATAREG)"; // scritto FIELD_NAME meglio usarla
|
||||
queryIva << "\nJOIN MOV INTO " << MOV_NUMREG << "==" << MOV_NUMREG << "\n";
|
||||
TString query_iva = "USE RMOVIVA\n";
|
||||
query_iva << "SELECT ( " << FIELD_NAME(LF_MOV, MOV_REG) << "!=\"\")&&BETWEEN( " << FIELD_NAME(LF_MOV, MOV_DATAREG) << ",#DADATAREG,#ADATAREG)"; // scritto FIELD_NAME meglio usarla
|
||||
query_iva << "\nJOIN MOV INTO " << MOV_NUMREG << "==" << MOV_NUMREG << "\n";
|
||||
|
||||
TISAM_recordset curIva(queryIva);
|
||||
curIva.set_var("#DADATAREG", data_da);
|
||||
curIva.set_var("#ADATAREG", data_a);
|
||||
TISAM_recordset cur_iva(query_iva);
|
||||
cur_iva.set_var("#DADATAREG", data_da);
|
||||
cur_iva.set_var("#ADATAREG", data_a);
|
||||
|
||||
for(bool ok = curIva.move_first(); ok; ok = curIva.move_next())
|
||||
for(bool ok = cur_iva.move_first(); ok; ok = cur_iva.move_next())
|
||||
{
|
||||
TString totat, totpas, i;
|
||||
// Controllo che sia un movimento con codice non "non soggetto"
|
||||
TCodiceIVA codiva(curIva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string());
|
||||
TCodiceIVA codiva(cur_iva.get(FIELD_NAME(LF_RMOVIVA, RMI_CODIVA)).as_string());
|
||||
if(codiva.tipo() == "NS") continue;
|
||||
|
||||
// Prendo il tipo di registro
|
||||
TRegistro reg(curIva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno);
|
||||
TRegistro reg(cur_iva.get(FIELD_NAME(LF_MOV, MOV_REG)).as_string(), anno);
|
||||
int tiporeg = reg.tipo();
|
||||
bool isCorrispettivo = reg.corrispettivi();
|
||||
bool is_corrispettivo = reg.corrispettivi();
|
||||
|
||||
// Prendiamo l'imponibile
|
||||
real imp = curIva.get("25.IMPONIBILE").as_real();
|
||||
real imposta = curIva.get("25.IMPOSTA").as_real();
|
||||
real imp = cur_iva.get("25.IMPONIBILE").as_real();
|
||||
real imposta = cur_iva.get("25.IMPOSTA").as_real();
|
||||
|
||||
// Se è un movimento IvaXCassa o LiqDiff
|
||||
if(hasIXC && (curIva.get("23.IVAXCASSA").as_bool() || curIva.get("23.LIQDIFF").as_bool()))
|
||||
if(has_ixc && (cur_iva.get("23.IVAXCASSA").as_bool() || cur_iva.get("23.LIQDIFF").as_bool()))
|
||||
{
|
||||
if(tiporeg == iva_vendite)
|
||||
totopattxc += imp;
|
||||
@ -479,11 +479,11 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
{
|
||||
// Controllo il reverse charge, non va calcolato nel totale delle operazioni attive!
|
||||
// Se non ha una riga di movimento non lo sommo
|
||||
TString keyRC = curIva.get("23.NUMREG").as_string(); keyRC << "|1";
|
||||
if(!cache().get(LF_RMOV, keyRC).empty())
|
||||
TString key_rc = cur_iva.get("23.NUMREG").as_string(); key_rc << "|1";
|
||||
if(!cache().get(LF_RMOV, key_rc).empty())
|
||||
{
|
||||
// Controllo se è un corrispettivo non scorporato (imponibile e iva assieme)
|
||||
if(isCorrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
|
||||
if(is_corrispettivo && codiva.percentuale() > ZERO && imposta == ZERO)
|
||||
{
|
||||
// Nell'imponibile è presente il totale fattura, devo calcolare l'imposta e sottrarla
|
||||
// Es iva 22% => imp : 122 = x : 100
|
||||
@ -502,7 +502,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
|
||||
|
||||
// Se ha attiva l'IVA x cassa calcolo le imposte (imponibili per comodità già calcolati sopra)
|
||||
if(hasIXC)
|
||||
if(has_ixc)
|
||||
{
|
||||
// IVA esigibile
|
||||
real imposta_diff, imposta_xcas;
|
||||
@ -526,7 +526,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
|
||||
/** Resto *****************************************************************************************************/
|
||||
|
||||
TRectype rowLam = getLAM(anno, start);
|
||||
TRectype row_lam = getLAM(anno, start);
|
||||
|
||||
/* É saltato fuori che in caso di liquidazione trimestrale l'importo ivaes e ivadet
|
||||
* viene scritto su ogni mese, quindi prendo solo quando
|
||||
@ -534,44 +534,44 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
|
||||
if(start == end)
|
||||
{
|
||||
ivaes += rowLam.get_real("R0");
|
||||
ivadet += rowLam.get_real("R1");
|
||||
ivaes += row_lam.get_real("R0");
|
||||
ivadet += row_lam.get_real("R1");
|
||||
}
|
||||
ivaes += ivaesxc + ivaesdiff;
|
||||
ivadet += ivadetxc + ivadetdiff;
|
||||
|
||||
rettifiche = rettifiche + rowLim.get_real("R5");
|
||||
varimp = varimp + rowLim.get_real("R17");
|
||||
rimborsi = rimborsi + rowLim.get_real("R1");
|
||||
impnover = impnover + rowLim.get_real("R18");
|
||||
crespec = crespec + rowLim.get_real("R19");
|
||||
vereff = vereff + rowLim.get_real("R8");
|
||||
rettifiche = rettifiche + row_lim.get_real("R5");
|
||||
varimp = varimp + row_lim.get_real("R17");
|
||||
rimborsi = rimborsi + row_lim.get_real("R1");
|
||||
impnover = impnover + row_lim.get_real("R18");
|
||||
crespec = crespec + row_lim.get_real("R19");
|
||||
vereff = vereff + row_lim.get_real("R8");
|
||||
|
||||
debprec = debprec + rowLim.get_real("S2");
|
||||
debprec = debprec + row_lim.get_real("S2");
|
||||
|
||||
real appReal = ZERO;
|
||||
real app_real = ZERO;
|
||||
|
||||
// Credito periodo precedente e anno precedente
|
||||
calcolaCreditoPrec(creprec, creaprec, mensile, anno, start);
|
||||
calcola_credito_prec(creprec, creaprec, _mensile, anno, start);
|
||||
|
||||
if(creaprec < ZERO)
|
||||
creaprec = ZERO;
|
||||
|
||||
intliqtri = intliqtri + rowLim.get_real("R14");
|
||||
accdov = accdov + rowLim.get_real("R11");
|
||||
intliqtri = intliqtri + row_lim.get_real("R14");
|
||||
accdov = accdov + row_lim.get_real("R11");
|
||||
}
|
||||
|
||||
// Controllo debprec
|
||||
// Calcolo prendendo dalla tabella %VER
|
||||
TRectype rowVer = getVER(anno, start);
|
||||
if(rowVer.empty() || rowVer.get_real("R5") == ZERO)
|
||||
TRectype row_ver = getVER(anno, start);
|
||||
if(row_ver.empty() || row_ver.get_real("R5") == ZERO)
|
||||
{
|
||||
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(debprec > rowVer.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
|
||||
if(debprec > row_ver.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
|
||||
debprec = ZERO;
|
||||
}
|
||||
// Calcolo ivadov/ivadovc
|
||||
@ -587,7 +587,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
}
|
||||
|
||||
// Calcolo l'IVA da versare o a Credito
|
||||
if (!mensile && get_int(F_TRIMESTRE) == 5)
|
||||
if (!_mensile && get_int(F_TRIMESTRE) == 5)
|
||||
{
|
||||
ivaver = ZERO;
|
||||
ivaverc = ZERO;
|
||||
@ -642,7 +642,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
set(F_VEREFF, vereff);
|
||||
|
||||
// Preparo il record
|
||||
saveGen();
|
||||
save_gen();
|
||||
// Azzero i booleani
|
||||
for(int i = B_TOTOPATT; i <= B_CRESPEC; i++)
|
||||
{
|
||||
@ -650,143 +650,143 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
}
|
||||
}
|
||||
|
||||
void ComLiqPerIva_mask::saveGen()
|
||||
void TCom_liq_per_iva_msk::save_gen()
|
||||
{
|
||||
// Assegno tutti i campi
|
||||
trueData.put("ANNO", get(F_ANNO));
|
||||
trueData.put("MESE", get(F_MESE));
|
||||
trueData.put("TRIMESTRE", get(F_TRIMESTRE));
|
||||
trueData.put("GENERATA", 'G'); // Segno che è generata da campo
|
||||
trueData.put("TOTOPATT", get(F_TOTOPATT));
|
||||
trueData.put("TOTOPATTXC", get(F_TOTOPATTXC));
|
||||
trueData.put("TOTOPPAS", get(F_TOTOPPAS));
|
||||
trueData.put("TOTOPPASXC", get(F_TOTOPPASXC));
|
||||
trueData.put("IVAES", get(F_IVAES));
|
||||
trueData.put("IVAESXC", get(F_IVAESXC));
|
||||
trueData.put("IVAESDIFF", get(F_IVAESDIFF));
|
||||
trueData.put("IVADET", get(F_IVADET));
|
||||
trueData.put("IVADETXC", get(F_IVADETXC));
|
||||
trueData.put("IVADETDIFF", get(F_IVADETDIFF));
|
||||
trueData.put("IVADOV", get(F_IVADOV));
|
||||
trueData.put("IVADOVC", get(F_IVADOVC));
|
||||
trueData.put("DEBPREC", get(F_DEBPREC));
|
||||
trueData.put("CREPREC", get(F_CREPREC));
|
||||
trueData.put("CREAPREC", get(F_CREAPREC));
|
||||
trueData.put("VEAUE", get(F_VEAUE));
|
||||
trueData.put("CREIMP", get(F_CREIMP));
|
||||
trueData.put("INTLIQTRI", get(F_INTLIQTRI));
|
||||
trueData.put("ACCDOV", get(F_ACCDOV));
|
||||
trueData.put("IVAVER", get(F_IVAVER));
|
||||
trueData.put("IVAVERC", get(F_IVAVERC));
|
||||
trueData.put("RETTIFICHE", get(F_RETTIFICHE));
|
||||
trueData.put("VARIMP", get(F_VARIMP));
|
||||
trueData.put("RIMBORSI", get(F_RIMBORSI));
|
||||
trueData.put("CRESPEC", get(F_CRESPEC));
|
||||
trueData.put("IMPNOVER", get(F_IMPNOVER));
|
||||
trueData.put("VEREFF", get(F_VEREFF));
|
||||
_true_data.put("ANNO", get(F_ANNO));
|
||||
_true_data.put("MESE", get(F_MESE));
|
||||
_true_data.put("TRIMESTRE", get(F_TRIMESTRE));
|
||||
_true_data.put("GENERATA", 'G'); // Segno che è generata da campo
|
||||
_true_data.put("TOTOPATT", get(F_TOTOPATT));
|
||||
_true_data.put("TOTOPATTXC", get(F_TOTOPATTXC));
|
||||
_true_data.put("TOTOPPAS", get(F_TOTOPPAS));
|
||||
_true_data.put("TOTOPPASXC", get(F_TOTOPPASXC));
|
||||
_true_data.put("IVAES", get(F_IVAES));
|
||||
_true_data.put("IVAESXC", get(F_IVAESXC));
|
||||
_true_data.put("IVAESDIFF", get(F_IVAESDIFF));
|
||||
_true_data.put("IVADET", get(F_IVADET));
|
||||
_true_data.put("IVADETXC", get(F_IVADETXC));
|
||||
_true_data.put("IVADETDIFF", get(F_IVADETDIFF));
|
||||
_true_data.put("IVADOV", get(F_IVADOV));
|
||||
_true_data.put("IVADOVC", get(F_IVADOVC));
|
||||
_true_data.put("DEBPREC", get(F_DEBPREC));
|
||||
_true_data.put("CREPREC", get(F_CREPREC));
|
||||
_true_data.put("CREAPREC", get(F_CREAPREC));
|
||||
_true_data.put("VEAUE", get(F_VEAUE));
|
||||
_true_data.put("CREIMP", get(F_CREIMP));
|
||||
_true_data.put("INTLIQTRI", get(F_INTLIQTRI));
|
||||
_true_data.put("ACCDOV", get(F_ACCDOV));
|
||||
_true_data.put("IVAVER", get(F_IVAVER));
|
||||
_true_data.put("IVAVERC", get(F_IVAVERC));
|
||||
_true_data.put("RETTIFICHE", get(F_RETTIFICHE));
|
||||
_true_data.put("VARIMP", get(F_VARIMP));
|
||||
_true_data.put("RIMBORSI", get(F_RIMBORSI));
|
||||
_true_data.put("CRESPEC", get(F_CRESPEC));
|
||||
_true_data.put("IMPNOVER", get(F_IMPNOVER));
|
||||
_true_data.put("VEREFF", get(F_VEREFF));
|
||||
}
|
||||
|
||||
void ComLiqPerIva_mask::checkOldValue(int field, real val)
|
||||
void TCom_liq_per_iva_msk::check_old_value(int field, real val)
|
||||
{
|
||||
if(trueData.empty())
|
||||
if(_true_data.empty())
|
||||
{
|
||||
TString key; key << get(F_ANNO) << "|" << get(F_MESE) << "|G";
|
||||
trueData = cache().get(LF_IVALIQ, key);
|
||||
_true_data = cache().get(LF_IVALIQ, key);
|
||||
}
|
||||
real trueVal = ZERO;
|
||||
real true_val = ZERO;
|
||||
|
||||
// Modo più intelligente di uno stupido switch case?
|
||||
switch(field)
|
||||
{
|
||||
case F_TOTOPATT:
|
||||
trueVal = trueData.get_real("TOTOPATT");
|
||||
true_val = _true_data.get_real("TOTOPATT");
|
||||
break;
|
||||
case F_TOTOPATTXC:
|
||||
trueVal = trueData.get_real("TOTOPATTXC");
|
||||
true_val = _true_data.get_real("TOTOPATTXC");
|
||||
break;
|
||||
case F_TOTOPPAS:
|
||||
trueVal = trueData.get_real("TOTOPPAS");
|
||||
true_val = _true_data.get_real("TOTOPPAS");
|
||||
break;
|
||||
case F_TOTOPPASXC:
|
||||
trueVal = trueData.get_real("TOTOPPASXC");
|
||||
true_val = _true_data.get_real("TOTOPPASXC");
|
||||
break;
|
||||
case F_IVAES:
|
||||
trueVal = trueData.get_real("IVAES");
|
||||
true_val = _true_data.get_real("IVAES");
|
||||
break;
|
||||
case F_IVAESXC:
|
||||
trueVal = trueData.get_real("IVAESXC");
|
||||
true_val = _true_data.get_real("IVAESXC");
|
||||
break;
|
||||
case F_IVAESDIFF:
|
||||
trueVal = trueData.get_real("IVAESDIFF");
|
||||
true_val = _true_data.get_real("IVAESDIFF");
|
||||
break;
|
||||
case F_IVADET:
|
||||
trueVal = trueData.get_real("IVADET");
|
||||
true_val = _true_data.get_real("IVADET");
|
||||
break;
|
||||
case F_IVADETXC:
|
||||
trueVal = trueData.get_real("IVADETXC");
|
||||
true_val = _true_data.get_real("IVADETXC");
|
||||
break;
|
||||
case F_IVADETDIFF:
|
||||
trueVal = trueData.get_real("IVADETDIFF");
|
||||
true_val = _true_data.get_real("IVADETDIFF");
|
||||
break;
|
||||
case F_IVADOV:
|
||||
trueVal = trueData.get_real("IVADOV");
|
||||
true_val = _true_data.get_real("IVADOV");
|
||||
break;
|
||||
case F_IVADOVC:
|
||||
trueVal = trueData.get_real("IVADOVC");
|
||||
true_val = _true_data.get_real("IVADOVC");
|
||||
break;
|
||||
case F_DEBPREC:
|
||||
trueVal = trueData.get_real("DEBPREC");
|
||||
true_val = _true_data.get_real("DEBPREC");
|
||||
break;
|
||||
case F_CREPREC:
|
||||
trueVal = trueData.get_real("CREPREC");
|
||||
true_val = _true_data.get_real("CREPREC");
|
||||
break;
|
||||
case F_CREAPREC:
|
||||
trueVal = trueData.get_real("CREAPREC");
|
||||
true_val = _true_data.get_real("CREAPREC");
|
||||
break;
|
||||
case F_VEAUE:
|
||||
trueVal = trueData.get_real("VEAUE");
|
||||
true_val = _true_data.get_real("VEAUE");
|
||||
break;
|
||||
case F_CREIMP:
|
||||
trueVal = trueData.get_real("CREIMP");
|
||||
true_val = _true_data.get_real("CREIMP");
|
||||
break;
|
||||
case F_INTLIQTRI:
|
||||
trueVal = trueData.get_real("INTLIQTRI");
|
||||
true_val = _true_data.get_real("INTLIQTRI");
|
||||
break;
|
||||
case F_ACCDOV:
|
||||
trueVal = trueData.get_real("ACCDOV");
|
||||
true_val = _true_data.get_real("ACCDOV");
|
||||
break;
|
||||
case F_IVAVER:
|
||||
trueVal = trueData.get_real("IVAVER");
|
||||
true_val = _true_data.get_real("IVAVER");
|
||||
break;
|
||||
case F_IVAVERC:
|
||||
trueVal = trueData.get_real("IVAVERC");
|
||||
true_val = _true_data.get_real("IVAVERC");
|
||||
break;
|
||||
case F_RETTIFICHE:
|
||||
trueVal = trueData.get_real("RETTIFICHE");
|
||||
true_val = _true_data.get_real("RETTIFICHE");
|
||||
break;
|
||||
case F_VARIMP:
|
||||
trueVal = trueData.get_real("VARIMP");
|
||||
true_val = _true_data.get_real("VARIMP");
|
||||
break;
|
||||
case F_RIMBORSI:
|
||||
trueVal = trueData.get_real("RIMBORSI");
|
||||
true_val = _true_data.get_real("RIMBORSI");
|
||||
break;
|
||||
case F_CRESPEC:
|
||||
trueVal = trueData.get_real("CRESPEC");
|
||||
true_val = _true_data.get_real("CRESPEC");
|
||||
break;
|
||||
case F_IMPNOVER:
|
||||
trueVal = trueData.get_real("IMPNOVER");
|
||||
true_val = _true_data.get_real("IMPNOVER");
|
||||
break;
|
||||
case F_VEREFF:
|
||||
trueVal = trueData.get_real("VEREFF");
|
||||
true_val = _true_data.get_real("VEREFF");
|
||||
break;
|
||||
}
|
||||
set(field + 50, trueVal != val ? "X" : "");
|
||||
set(field + 50, true_val != val ? "X" : "");
|
||||
}
|
||||
|
||||
class ComLiqPerIva_app : public TRelation_application
|
||||
class TCom_liq_per_iva_app : public TRelation_application
|
||||
{
|
||||
private:
|
||||
ComLiqPerIva_mask* _mask;
|
||||
TCom_liq_per_iva_msk* _mask;
|
||||
TRelation* _rel;
|
||||
protected:
|
||||
bool user_create();
|
||||
@ -797,15 +797,15 @@ public:
|
||||
virtual TRelation* get_relation() const {return (TRelation*)_rel;}
|
||||
};
|
||||
|
||||
bool ComLiqPerIva_app::user_create()
|
||||
bool TCom_liq_per_iva_app::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_IVALIQ);
|
||||
_mask = new ComLiqPerIva_mask;
|
||||
_mask = new TCom_liq_per_iva_msk;
|
||||
set_search_field(F_ANNO);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ComLiqPerIva_app::user_destroy()
|
||||
bool TCom_liq_per_iva_app::user_destroy()
|
||||
{
|
||||
delete _mask;
|
||||
return true;
|
||||
@ -813,7 +813,7 @@ bool ComLiqPerIva_app::user_destroy()
|
||||
|
||||
int tf0200(int argc, char* argv[])
|
||||
{
|
||||
ComLiqPerIva_app app;
|
||||
TCom_liq_per_iva_app app;
|
||||
app.run(argc, argv, TR("Trasferimento dati liquidazione IVA"));
|
||||
return 0;
|
||||
}
|
@ -425,48 +425,49 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
|
||||
{
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA);
|
||||
TRectype recMov(LF_MOV), recRmov(LF_RMOVIVA);
|
||||
TRectype rec_mov(LF_MOV);
|
||||
TRectype rec_rmov(LF_RMOVIVA);
|
||||
|
||||
recMov.put("NUMREG", numreg);
|
||||
recRmov.put("NUMREG", numreg);
|
||||
mov.read(recMov);
|
||||
rmov.read(recRmov);
|
||||
rec_mov.put("NUMREG", numreg);
|
||||
rec_rmov.put("NUMREG", numreg);
|
||||
mov.read(rec_mov);
|
||||
rmov.read(rec_rmov);
|
||||
|
||||
real imponibile = ZERO, imposta = ZERO;
|
||||
|
||||
while(!rmov.eof())
|
||||
{
|
||||
// Mi sposto se il codice IVA non è quello che mi serve
|
||||
while(recRmov.get("NUMREG") == numreg && recRmov.get("CODIVA") != codiva)
|
||||
while(rec_rmov.get("NUMREG") == numreg && rec_rmov.get("CODIVA") != codiva)
|
||||
{
|
||||
++rmov;
|
||||
recRmov = rmov.curr();
|
||||
rec_rmov = rmov.curr();
|
||||
}
|
||||
if(recRmov.get("NUMREG") != numreg) break;
|
||||
imponibile += recRmov.get_real("IMPONIBILE");
|
||||
imposta += recRmov.get_real("IMPOSTA");
|
||||
if(rec_rmov.get("NUMREG") != numreg) break;
|
||||
imponibile += rec_rmov.get_real("IMPONIBILE");
|
||||
imposta += rec_rmov.get_real("IMPOSTA");
|
||||
|
||||
// Mi sposto
|
||||
++rmov;
|
||||
recRmov = rmov.curr();
|
||||
rec_rmov = rmov.curr();
|
||||
}
|
||||
// Torno sul record per prendere i dati che mi mancano
|
||||
--rmov; recRmov = rmov.curr();
|
||||
row.add(recMov.get("DATAREG"), s.cid2index(A_DATAREG));
|
||||
row.add(recMov.get("TIPODOC"), s.cid2index(A_TIPODOC));
|
||||
row.add(recMov.get("NUMDOC"), s.cid2index(A_NUMDOC));
|
||||
row.add(recMov.get("DATADOC"), s.cid2index(A_DATADOC));
|
||||
row.add(recRmov.get("CODIVA"), s.cid2index(A_ALIQUOTA));
|
||||
--rmov; rec_rmov = rmov.curr();
|
||||
row.add(rec_mov.get("DATAREG"), s.cid2index(A_DATAREG));
|
||||
row.add(rec_mov.get("TIPODOC"), s.cid2index(A_TIPODOC));
|
||||
row.add(rec_mov.get("NUMDOC"), s.cid2index(A_NUMDOC));
|
||||
row.add(rec_mov.get("DATADOC"), s.cid2index(A_DATADOC));
|
||||
row.add(rec_rmov.get("CODIVA"), s.cid2index(A_ALIQUOTA));
|
||||
row.add(imponibile, s.cid2index(A_IMPONIBILE));
|
||||
row.add(imposta, s.cid2index(A_IMPOSTA));
|
||||
// NATURA
|
||||
row.add(natura(recRmov.get("CODIVA")), s.cid2index(A_NATURA));
|
||||
row.add(natura(rec_rmov.get("CODIVA")), s.cid2index(A_NATURA));
|
||||
// DETR
|
||||
row.add(find_detraib(recRmov.get("TIPODET")), s.cid2index(A_DETRAIB));
|
||||
row.add(find_detraib(rec_rmov.get("TIPODET")), s.cid2index(A_DETRAIB));
|
||||
|
||||
row.add(recMov.get("TIPO"), s.cid2index(A_TIPOCF));
|
||||
row.add(recMov.get("CODCF"), s.cid2index(A_CODCF));
|
||||
row.add(recMov.get("OCFPI"), s.cid2index(A_OCFPI));
|
||||
row.add(rec_mov.get("TIPO"), s.cid2index(A_TIPOCF));
|
||||
row.add(rec_mov.get("CODCF"), s.cid2index(A_CODCF));
|
||||
row.add(rec_mov.get("OCFPI"), s.cid2index(A_OCFPI));
|
||||
// RSOC
|
||||
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
||||
// RFSO
|
||||
@ -474,7 +475,7 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
|
||||
// RSOC RFSO
|
||||
row.add(get_rfso(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
||||
// RC
|
||||
row.add((rev_charge(recMov.get("NUMREG"), recMov.get_date("DATAREG").year())), s.cid2index(A_REVERSE));
|
||||
row.add((rev_charge(rec_mov.get("NUMREG"), rec_mov.get_date("DATAREG").year())), s.cid2index(A_REVERSE));
|
||||
// AUTOFATT
|
||||
if(_ditta.partita_IVA() == clifo.get("PAIV"))
|
||||
{
|
||||
@ -488,8 +489,8 @@ void TSpe_check_msk::find_homeland(TToken_string& row, TString numreg, TString c
|
||||
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
|
||||
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
|
||||
}
|
||||
row.add(recMov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA));
|
||||
row.add(recMov.get("NUMREG"), s.cid2index(A_NUMERO));
|
||||
row.add(rec_mov.get_bool("TFINVIO") ? "X" : "", s.cid2index(A_SPEDITA));
|
||||
row.add(rec_mov.get("NUMREG"), s.cid2index(A_NUMERO));
|
||||
}
|
||||
|
||||
|
||||
@ -669,20 +670,20 @@ void TSpe_check_msk::save_all()
|
||||
|
||||
TString key = strarr->get(s.cid2index(A_NUMERO)); key << "|"<< strarr->get(s.cid2index(A_ALIQUOTA));
|
||||
|
||||
TRectype rCust = cache().get(LF_TRASFATT, key);
|
||||
rCust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF)));
|
||||
rCust.put("CODCF", strarr->get(s.cid2index(A_CODCF)));
|
||||
rCust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI)));
|
||||
rCust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC)));
|
||||
rCust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC)));
|
||||
rCust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG)));
|
||||
rCust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC)));
|
||||
rCust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE)));
|
||||
rCust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA)));
|
||||
rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
rCust.put("NATURA", strarr->get(s.cid2index(A_NATURA)));
|
||||
rCust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT)));
|
||||
if(rCust.rewrite(trasfatt) != NOERR)
|
||||
TRectype r_cust = cache().get(LF_TRASFATT, key);
|
||||
r_cust.put("TIPO", strarr->get(s.cid2index(A_TIPOCF)));
|
||||
r_cust.put("CODCF", strarr->get(s.cid2index(A_CODCF)));
|
||||
r_cust.put("OCCAS", strarr->get(s.cid2index(A_OCFPI)));
|
||||
r_cust.put("TIPODOC", strarr->get(s.cid2index(A_TIPODOC)));
|
||||
r_cust.put("NUMDOC", strarr->get(s.cid2index(A_NUMDOC)));
|
||||
r_cust.put("DATAREG", strarr->get(s.cid2index(A_DATAREG)));
|
||||
r_cust.put("DATADOC", strarr->get(s.cid2index(A_DATADOC)));
|
||||
r_cust.put("IMPONIBILE", strarr->get(s.cid2index(A_IMPONIBILE)));
|
||||
r_cust.put("IMPOSTA", strarr->get(s.cid2index(A_IMPOSTA)));
|
||||
r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
r_cust.put("NATURA", strarr->get(s.cid2index(A_NATURA)));
|
||||
r_cust.put("AUTOFATT", strarr->get(s.cid2index(A_AUTOFATT)));
|
||||
if(r_cust.rewrite(trasfatt) != NOERR)
|
||||
{
|
||||
error_box("Errore durante il salvataggio del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
return;
|
||||
@ -701,11 +702,11 @@ void TSpe_check_msk::delete_all()
|
||||
if(strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0 || (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0)) continue;
|
||||
|
||||
static TLocalisamfile trasfatt(LF_TRASFATT);
|
||||
static TRectype rCust(LF_TRASFATT);
|
||||
rCust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO)));
|
||||
rCust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
static TRectype r_cust(LF_TRASFATT);
|
||||
r_cust.put("NUMREG", strarr->get(s.cid2index(A_NUMERO)));
|
||||
r_cust.put("CODIVA", strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
|
||||
if(rCust.remove(trasfatt) != NOERR)
|
||||
if(r_cust.remove(trasfatt) != NOERR)
|
||||
{
|
||||
error_box("Errore durante l'eliminazione del movimento n.: %s, cod alq: %s", strarr->get(s.cid2index(A_NUMERO)) ,strarr->get(s.cid2index(A_ALIQUOTA)));
|
||||
return;
|
||||
|
@ -14,30 +14,30 @@
|
||||
|
||||
#define CODICE_FORNITURA "IVP"
|
||||
|
||||
class TIvaSend_msk : public TAutomask
|
||||
class TIva_send_msk : public TAutomask
|
||||
{
|
||||
bool mese;
|
||||
bool _mese;
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
bool checkVariables();
|
||||
bool isMese() { return mese; }
|
||||
TIvaSend_msk() : TAutomask("tf0500a"){}
|
||||
bool check_variables();
|
||||
bool is_mese() const { return _mese; }
|
||||
TIva_send_msk() : TAutomask("tf0500a"){}
|
||||
};
|
||||
|
||||
// Definizione per chiamare metodo send dalla maschera
|
||||
class TIvaSend_app : public TSkeleton_application
|
||||
class TIva_send_app : public TSkeleton_application
|
||||
{
|
||||
void generateNSend(TIvaSend_msk& msk) { generate(msk) && send(); }
|
||||
bool generate(TIvaSend_msk& msk);
|
||||
TToken_string getTestata(TIvaSend_msk& msk);
|
||||
void generate_n_send(TIva_send_msk& msk) { generate(msk) && send(); }
|
||||
bool generate(TIva_send_msk& msk);
|
||||
TToken_string get_testata(TIva_send_msk& msk);
|
||||
public:
|
||||
bool send();
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
TIvaSend_app& app() { return (TIvaSend_app&)main_app(); }
|
||||
TIva_send_app& app() { return (TIva_send_app&)main_app(); }
|
||||
|
||||
const TRectype getAnagDitta()
|
||||
const TRectype get_anag_ditta()
|
||||
{
|
||||
TString codanagr = cache().get(LF_NDITTE, prefix().firm().codice(), "TIPOA");
|
||||
codanagr << "|" << cache().get(LF_NDITTE, prefix().firm().codice(), "CODANAGR");
|
||||
@ -45,7 +45,7 @@ const TRectype getAnagDitta()
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di tabcom.LIM
|
||||
const TRectype getLim(int anno, int mese)
|
||||
const TRectype get_lim(int anno, int mese)
|
||||
{
|
||||
TString key; key << anno;
|
||||
if(mese < 10)
|
||||
@ -56,7 +56,7 @@ const TRectype getLim(int anno, int mese)
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di ivaliq
|
||||
const TRectype getLiq(int anno, int mese)
|
||||
const TRectype get_liq(int anno, int mese)
|
||||
{
|
||||
TString key; key << anno << "|";
|
||||
if(mese < 10)
|
||||
@ -66,22 +66,22 @@ const TRectype getLiq(int anno, int mese)
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di tabcom.LIA
|
||||
const TRectype getLia(int anno)
|
||||
const TRectype get_lia(int anno)
|
||||
{
|
||||
TString key; key << format("%05d", prefix().firm().codice()) << anno; // %05d Crea un numero di 5 cifre partendo dal codice e mettendoci 0 davanti
|
||||
return cache().get("%LIA", key);
|
||||
}
|
||||
|
||||
TString formatCurrency(TString value)
|
||||
TString format_currency(const TString& value)
|
||||
{
|
||||
real app(value);
|
||||
const real app(value);
|
||||
if(app == ZERO)
|
||||
return ",00";
|
||||
else
|
||||
return TCurrency(app).string();
|
||||
}
|
||||
|
||||
bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
bool TIva_send_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
@ -102,7 +102,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
}
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
mese = true;
|
||||
_mese = true;
|
||||
enable(F_DAMESE);
|
||||
enable(F_AMESE);
|
||||
disable(F_DATRIMESTRE);
|
||||
@ -110,7 +110,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
}
|
||||
else
|
||||
{
|
||||
mese = false;
|
||||
_mese = false;
|
||||
disable(F_DAMESE);
|
||||
disable(F_AMESE);
|
||||
enable(F_DATRIMESTRE);
|
||||
@ -129,7 +129,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
set(F_ANNO, i);
|
||||
mese = true;
|
||||
_mese = true;
|
||||
enable(F_DAMESE);
|
||||
enable(F_AMESE);
|
||||
disable(F_DATRIMESTRE);
|
||||
@ -139,7 +139,7 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
else
|
||||
{
|
||||
set(F_ANNO, i);
|
||||
mese = false;
|
||||
_mese = false;
|
||||
disable(F_DAMESE);
|
||||
disable(F_AMESE);
|
||||
enable(F_DATRIMESTRE);
|
||||
@ -165,19 +165,19 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TIvaSend_msk::checkVariables()
|
||||
bool TIva_send_msk::check_variables()
|
||||
{
|
||||
if(get(F_ANNO).empty())
|
||||
{
|
||||
error_box("Inserire un anno di liquidazione");
|
||||
return false;
|
||||
}
|
||||
if((mese && get(F_DAMESE).empty() && get(F_AMESE).empty()) || (!mese && get(F_DATRIMESTRE).empty() && get(F_ATRIMESTRE).empty()))
|
||||
if((_mese && get(F_DAMESE).empty() && get(F_AMESE).empty()) || (!_mese && get(F_DATRIMESTRE).empty() && get(F_ATRIMESTRE).empty()))
|
||||
{
|
||||
error_box("Inserisci un periodo");
|
||||
return false;
|
||||
}
|
||||
if((mese && (get_int(F_DAMESE) > get_int(F_AMESE))) || (!mese &&(get_int(F_DATRIMESTRE) > get_int(F_ATRIMESTRE))))
|
||||
if((_mese && (get_int(F_DAMESE) > get_int(F_AMESE))) || (!_mese &&(get_int(F_DATRIMESTRE) > get_int(F_ATRIMESTRE))))
|
||||
{
|
||||
error_box("Date immesse non corrette");
|
||||
return false;
|
||||
@ -185,26 +185,26 @@ bool TIvaSend_msk::checkVariables()
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TIvaSend_app::generate(TIvaSend_msk& msk)
|
||||
bool TIva_send_app::generate(TIva_send_msk& msk)
|
||||
{
|
||||
if(!msk.checkVariables())
|
||||
if(!msk.check_variables())
|
||||
return false;
|
||||
ofstream file;
|
||||
TFilename path(msk.get(F_PATH));
|
||||
|
||||
TRectype rowLia = getLia(msk.get_int(F_ANNO));
|
||||
TRectype row_lia = get_lia(msk.get_int(F_ANNO));
|
||||
|
||||
// Decido di utilizzare I10 come numero progressivo di trasmissione
|
||||
int prog = rowLia.get_int("I14");
|
||||
int prog = row_lia.get_int("I14");
|
||||
if(prog == 0)
|
||||
{
|
||||
prog = getLia(msk.get_int(F_ANNO) - 1).get_int("I14");
|
||||
prog = get_lia(msk.get_int(F_ANNO) - 1).get_int("I14");
|
||||
}
|
||||
prog++;
|
||||
|
||||
TString nomeFile; nomeFile << "IT" << getAnagDitta().get("PAIV") << TIPO_FILE << prog << ".csv";
|
||||
TString nome_file; nome_file << "IT" << get_anag_ditta().get("PAIV") << TIPO_FILE << prog << ".csv";
|
||||
|
||||
path.add(nomeFile);
|
||||
path.add(nome_file);
|
||||
file.open(path, ios::out);
|
||||
|
||||
if(!file.is_open())
|
||||
@ -212,48 +212,48 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
|
||||
else
|
||||
ini_set_string(CONFIG_STUDIO, "tf", "path_invio", msk.get(F_PATH));
|
||||
|
||||
TToken_string testata(getTestata(msk));
|
||||
const TToken_string testata(get_testata(msk));
|
||||
|
||||
int start = msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE)) * 3));
|
||||
int end = msk.isMese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE)) * 3));
|
||||
int start = msk.is_mese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE)) * 3));
|
||||
const int end = msk.is_mese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE)) * 3));
|
||||
for(; start <= end; start++)
|
||||
{
|
||||
TRectype rowLim = getLim(msk.get_int(F_ANNO), start); // rowLim viene già usata sopra
|
||||
TRectype rowLiq = getLiq(msk.get_int(F_ANNO), start);
|
||||
TRectype row_lim = get_lim(msk.get_int(F_ANNO), start); // row_lim viene già usata sopra
|
||||
TRectype row_liq = get_liq(msk.get_int(F_ANNO), start);
|
||||
|
||||
TToken_string riga(testata);
|
||||
if(msk.isMese())
|
||||
if(msk.is_mese())
|
||||
{
|
||||
riga.add(start); // Mese
|
||||
riga.add(""); // Trimestre
|
||||
riga.add(start); // Mese
|
||||
riga.add(""); // Trimestre
|
||||
}
|
||||
else
|
||||
{
|
||||
riga.add(""); // Mese
|
||||
riga.add(rowLiq.get_int("TRIMESTRE") == 4 ? "5" : rowLiq.get("TRIMESTRE")); // Trimestre
|
||||
riga.add(""); // Mese
|
||||
riga.add(row_liq.get_int("TRIMESTRE") == 4 ? "5" : row_liq.get("TRIMESTRE")); // Trimestre
|
||||
}
|
||||
|
||||
char subfor = rowLiq.get_bool("SUBFOR") ? 'X' : '\0';
|
||||
riga.add(subfor); // Flag Subfornitura
|
||||
riga.add(""); // Eventi eccezionali
|
||||
riga.add(formatCurrency(rowLiq.get("TOTOPATT"))); // Totale operazioni attive (al netto dell'IVA)
|
||||
riga.add(formatCurrency(rowLiq.get("TOTOPPAS"))); // Totale operazioni passive (al netto dell'IVA)
|
||||
riga.add(formatCurrency(rowLiq.get("IVAES"))); // IVA esigibile
|
||||
riga.add(formatCurrency(rowLiq.get("IVADET"))); // IVA detratta
|
||||
riga.add(formatCurrency(rowLiq.get("IVADOV"))); // IVA dovuta
|
||||
riga.add(formatCurrency(rowLiq.get("IVADOVC"))); // IVA a credito VP6 col 2
|
||||
riga.add(formatCurrency(rowLiq.get("DEBPREC"))); // Debito periodo precedente
|
||||
riga.add(formatCurrency(rowLiq.get("CREPREC"))); // Credito periodo precedente
|
||||
riga.add(formatCurrency(rowLiq.get("CREAPREC"))); // Credito anno precedente
|
||||
riga.add(formatCurrency(rowLiq.get("VEAUE"))); // Versamenti auto UE
|
||||
riga.add(formatCurrency(rowLiq.get("CREIMP"))); // Crediti di imposta
|
||||
riga.add(formatCurrency(rowLiq.get("INTLIQTRI"))); // Interessi dovuti per liquidazioni trimestrali
|
||||
riga.add(formatCurrency(rowLiq.get("ACCDOV"))); // Acconto dovuto
|
||||
riga.add(formatCurrency(rowLiq.get("IVAVER"))); // IVA da versare
|
||||
riga.add(formatCurrency(rowLiq.get("IVAVERC"))); // IVA a credito VP14 col 2
|
||||
riga.add(prog); // Numero interno trasmissione
|
||||
riga.add(""); // Flag trasmesso
|
||||
riga.add(""); // Flag accettato
|
||||
const char subfor = row_liq.get_bool("SUBFOR") ? 'X' : '\0';
|
||||
riga.add(subfor); // Flag Subfornitura
|
||||
riga.add(""); // Eventi eccezionali
|
||||
riga.add(format_currency(row_liq.get("TOTOPATT"))); // Totale operazioni attive (al netto dell'IVA)
|
||||
riga.add(format_currency(row_liq.get("TOTOPPAS"))); // Totale operazioni passive (al netto dell'IVA)
|
||||
riga.add(format_currency(row_liq.get("IVAES"))); // IVA esigibile
|
||||
riga.add(format_currency(row_liq.get("IVADET"))); // IVA detratta
|
||||
riga.add(format_currency(row_liq.get("IVADOV"))); // IVA dovuta
|
||||
riga.add(format_currency(row_liq.get("IVADOVC"))); // IVA a credito VP6 col 2
|
||||
riga.add(format_currency(row_liq.get("DEBPREC"))); // Debito periodo precedente
|
||||
riga.add(format_currency(row_liq.get("CREPREC"))); // Credito periodo precedente
|
||||
riga.add(format_currency(row_liq.get("CREAPREC"))); // Credito anno precedente
|
||||
riga.add(format_currency(row_liq.get("VEAUE"))); // Versamenti auto UE
|
||||
riga.add(format_currency(row_liq.get("CREIMP"))); // Crediti di imposta
|
||||
riga.add(format_currency(row_liq.get("INTLIQTRI"))); // Interessi dovuti per liquidazioni trimestrali
|
||||
riga.add(format_currency(row_liq.get("ACCDOV"))); // Acconto dovuto
|
||||
riga.add(format_currency(row_liq.get("IVAVER"))); // IVA da versare
|
||||
riga.add(format_currency(row_liq.get("IVAVERC"))); // IVA a credito VP14 col 2
|
||||
riga.add(prog); // Numero interno trasmissione
|
||||
riga.add(""); // Flag trasmesso
|
||||
riga.add(""); // Flag accettato
|
||||
|
||||
// Appendo al file
|
||||
file << riga << "\n";
|
||||
@ -261,8 +261,8 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
|
||||
file.close();
|
||||
// Aggiorno l'univoco
|
||||
|
||||
rowLia.put("I14", prog);
|
||||
if(rowLia.rewrite(TLocalisamfile(LF_TABCOM)) != NOERR)
|
||||
row_lia.put("I14", prog);
|
||||
if(row_lia.rewrite(TLocalisamfile(LF_TABCOM)) != NOERR)
|
||||
{
|
||||
error_box("Errore aggiornamento progressivo");
|
||||
return false;
|
||||
@ -270,7 +270,7 @@ bool TIvaSend_app::generate(TIvaSend_msk& msk)
|
||||
return true;
|
||||
}
|
||||
|
||||
TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
|
||||
TToken_string TIva_send_app::get_testata(TIva_send_msk& msk)
|
||||
{
|
||||
TToken_string testata; // Token string di virgole
|
||||
TString cod_forn = CODICE_FORNITURA; cod_forn << msk.get(F_ANNO).right(2);
|
||||
@ -280,21 +280,21 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
|
||||
testata.add(msk.get_int(F_ANNO)); // Anno comunicazione
|
||||
testata.add(""); // Mese comunicazione
|
||||
|
||||
TRectype anaDitta = getAnagDitta();
|
||||
TRectype ana_ditta = get_anag_ditta();
|
||||
|
||||
testata.add(anaDitta.get("COFI")); // Codice fiscale
|
||||
testata.add(anaDitta.get("PAIV")); // Partita IVA
|
||||
testata.add(ana_ditta.get("COFI")); // Codice fiscale
|
||||
testata.add(ana_ditta.get("PAIV")); // Partita IVA
|
||||
testata.add(""); // P.IVA Controllante
|
||||
testata.add(""); // Flag Liq. gruppo
|
||||
testata.add(""); // Flag firma comunicazione
|
||||
|
||||
int codiceCarica = atoi(prefix().firm().get("CARRAPP"));
|
||||
if(codiceCarica > 0)
|
||||
const int codice_carica = atoi(prefix().firm().get("CARRAPP"));
|
||||
if(codice_carica > 0)
|
||||
{
|
||||
TString key = "F|"; key << prefix().firm().get("RAPPR");
|
||||
TString codFisc = cache().get(LF_ANAG, key, "COFI");
|
||||
testata.add(codFisc); // Cod.Fisc. Dichiarante
|
||||
testata.add(codiceCarica); // Cod.Carica Dichiarante
|
||||
const TString cod_fisc = cache().get(LF_ANAG, key, "COFI");
|
||||
testata.add(cod_fisc); // Cod.Fisc. Dichiarante
|
||||
testata.add(codice_carica); // Cod.Carica Dichiarante
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -312,10 +312,9 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
|
||||
return testata;
|
||||
}
|
||||
|
||||
bool TIvaSend_app::send()
|
||||
bool TIva_send_app::send()
|
||||
{
|
||||
TFilename tmp;
|
||||
tmp = TFBASE"\\ModuliSirio.jar";
|
||||
TFilename tmp = TFBASE"\\ModuliSirio.jar";
|
||||
tmp.make_absolute_path();
|
||||
|
||||
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
|
||||
@ -328,25 +327,25 @@ bool TIvaSend_app::send()
|
||||
}
|
||||
else
|
||||
{
|
||||
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
|
||||
error_box(FR("Impossibile eseguire Java -jar %s"), static_cast<const char*>(tmp));
|
||||
}
|
||||
xvt_fsys_set_dir(&old_dir);
|
||||
return true;
|
||||
}
|
||||
|
||||
void TIvaSend_app::main_loop()
|
||||
void TIva_send_app::main_loop()
|
||||
{
|
||||
TIvaSend_msk msk;
|
||||
TIva_send_msk msk;
|
||||
while(msk.run() == K_ENTER)
|
||||
{
|
||||
generateNSend(msk);
|
||||
generate_n_send(msk);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int tf0500(int argc, char* argv[])
|
||||
{
|
||||
TIvaSend_app app;
|
||||
TIva_send_app app;
|
||||
app.run(argc, argv, TR("Invio dati liquidazione IVA"));
|
||||
return 0;
|
||||
}
|
@ -151,8 +151,8 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
||||
|
||||
// Se voglio solo quelli inviati e non è stato inviato o
|
||||
// voglio solo quelli non inviati ed è stato inviato, RUSPA!
|
||||
if ((!is_sent && paf_sent) || (is_sent && paf_not_sent))
|
||||
return false;
|
||||
if ((is_sent && paf_sent) || (!is_sent && paf_not_sent))
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -183,12 +183,14 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else if(paf_sog_fat || paf_esteri)
|
||||
{
|
||||
const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM";
|
||||
if ((is_fatturabile && !paf_sog_fat) || (is_fatturabile && paf_esteri))
|
||||
return false;
|
||||
if ((is_fatturabile && paf_sog_fat) || (!is_fatturabile && paf_esteri))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
} else
|
||||
@ -216,12 +218,13 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
else if (paa_sog_fat || paa_esteri)
|
||||
{
|
||||
const bool is_fatturabile = ana_cli.stato_partita_IVA() == "IT" || ana_cli.stato_partita_IVA() == "SM";
|
||||
if ((is_fatturabile && !paa_sog_fat) || (is_fatturabile && paa_esteri))
|
||||
return false;
|
||||
if ((is_fatturabile && paa_sog_fat) || (!is_fatturabile && paa_esteri))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user