Patch level : 12.0 728
Files correlati : tf0100, tf0400 Commento : - Sistemati filtri per esterometro - Aggiunta visualizzazione fatture non inviate in trasferimento fatture
This commit is contained in:
parent
fbec77324c
commit
0861213978
@ -277,7 +277,6 @@ BEGIN
|
||||
ITEM "Modificata@10"
|
||||
ITEM "N.\nRegistraz.@10"
|
||||
ITEM "Codici Errori@10"
|
||||
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -39,33 +39,34 @@ bool TTrFa_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
o.set(TDate(TODAY));
|
||||
break;
|
||||
case DLG_ALL:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TSheet_field& docs = sfield(F_RIGHE);
|
||||
TString_array& sht = docs.rows_array();
|
||||
const int items = sht.items();
|
||||
|
||||
if (items > 0)
|
||||
if (e == fe_button)
|
||||
{
|
||||
const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
|
||||
for (int i = 0; i < items; i++)
|
||||
sht.row(i).add(select, 0);
|
||||
docs.force_update();
|
||||
TSheet_field& docs = sfield(F_RIGHE);
|
||||
TString_array& sht = docs.rows_array();
|
||||
const int items = sht.items();
|
||||
|
||||
if (items > 0)
|
||||
{
|
||||
const TString4 select = *(sht.row(0).get(0)) == 'X' ? "" : "X";
|
||||
for (int i = 0; i < items; i++)
|
||||
sht.row(i).add(select, 0);
|
||||
docs.force_update();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DLG_PDF:
|
||||
{
|
||||
TMask cs_mask("Cambiamento stato movimenti", 1, 30, 5);
|
||||
cs_mask.add_button_tool(DLG_OK, "~Conferma", TOOL_OK);
|
||||
cs_mask.add_button_tool(DLG_CANCEL, "Annulla", TOOL_CANCEL);
|
||||
cs_mask.add_list(101, 0, "Da stato", 0, 0, 15, "", "X|I|N|F|E", "Da Inviare|Inviato|Disabilitato|Forzato|Errato");
|
||||
cs_mask.add_list(102, 0, "A stato", 0, 2, 15, "", "X|I|N|F|E", "Da Inviare|Inviato|Disabilitato|Forzato|Errato");
|
||||
if (cs_mask.run() == K_ENTER)
|
||||
if(e == fe_button)
|
||||
{
|
||||
update_stato(cs_mask.get(101), cs_mask.get(102));
|
||||
TMask cs_mask("Cambiamento stato movimenti", 1, 30, 5);
|
||||
cs_mask.add_button_tool(DLG_OK, "~Conferma", TOOL_OK);
|
||||
cs_mask.add_button_tool(DLG_CANCEL, "Annulla", TOOL_CANCEL);
|
||||
cs_mask.add_list(101, 0, "Da stato", 0, 0, 15, "", "X|I|N|F|E", "Da Inviare|Inviato|Disabilitato|Forzato|Errato");
|
||||
cs_mask.add_list(102, 0, "A stato", 0, 2, 15, "", "X|I|N|F|E", "Da Inviare|Inviato|Disabilitato|Forzato|Errato");
|
||||
if (cs_mask.run() == K_ENTER)
|
||||
{
|
||||
update_stato(cs_mask.get(101), cs_mask.get(102));
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_RIGHE:
|
||||
if (e == se_notify_add)
|
||||
|
@ -195,8 +195,8 @@ void TTrFa_cursors::reset_esterometro()
|
||||
_paf_e = msk().get_bool(B_PAF_ESTERI);
|
||||
_paa_ns = msk().get_bool(B_PAA_NOT_SENT);
|
||||
_paa_s = msk().get_bool(B_PAA_SENT);
|
||||
_paa_sf = msk().get_bool(B_PAA_ESTERI);
|
||||
_paa_e = msk().get_bool(B_PAA_SOG_FAT);
|
||||
_paa_e = msk().get_bool(B_PAA_ESTERI);
|
||||
_paa_sf = msk().get_bool(B_PAA_SOG_FAT);
|
||||
}
|
||||
|
||||
TTrFa_cursors::TTrFa_cursors(): _c_rmoviva(nullptr), _c_trasfatt(nullptr), _new_mov(false), _new_cust(false),
|
||||
|
@ -5,10 +5,15 @@
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <recset.h>
|
||||
#include <recarray.h> // cache()
|
||||
#include <recarray.h> // cache()
|
||||
#include "../fe/felib.h" // TAnagrafica
|
||||
#include "modaut.h"
|
||||
|
||||
typedef enum{
|
||||
def_sfield = F_RIGHE, // Sheetfield di default (tutte le colonne)
|
||||
not_send_sfield = F_NOTSEND // Sheetfield di breve (poche colonne per non inviate)
|
||||
} field;
|
||||
|
||||
/****************************************************************************************************
|
||||
* TSpe_check_msk
|
||||
****************************************************************************************************/
|
||||
@ -20,6 +25,8 @@ private:
|
||||
bool _selected;
|
||||
bool _has_fp;
|
||||
|
||||
TSheet_field& get_sfield(const int field);
|
||||
void fill_ninvio();
|
||||
void refresh();
|
||||
void fill_no_filter();
|
||||
void fill_diff();
|
||||
@ -63,10 +70,14 @@ bool TSpe_check_msk::on_field_event(TOperable_field& o, TField_event e, long jol
|
||||
case DLG_EDIT:
|
||||
if(e == fe_button)
|
||||
{
|
||||
TSheet_field& sheet = sfield(F_RIGHE);
|
||||
if(sheet.items() > 0)
|
||||
TSheet_field* sheet;
|
||||
if(get_int(F_TIPOCONTROLLO) == 3)
|
||||
sheet = &sfield(F_NOTSEND);
|
||||
else
|
||||
sheet = &sfield(F_RIGHE);
|
||||
if(sheet->items() > 0)
|
||||
{
|
||||
sheet.esporta();
|
||||
sheet->esporta();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -111,6 +122,94 @@ bool TSpe_check_msk::on_field_event(TOperable_field& o, TField_event e, long jol
|
||||
return true;
|
||||
}
|
||||
|
||||
TSheet_field& TSpe_check_msk::get_sfield(const int field)
|
||||
{
|
||||
TSheet_field* wrong, *right;
|
||||
if (field == def_sfield)
|
||||
{
|
||||
wrong = &sfield(not_send_sfield);
|
||||
right = &sfield(def_sfield);
|
||||
enable(F_FLAG);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrong = &sfield(def_sfield);
|
||||
right = &sfield(not_send_sfield);
|
||||
disable(F_FLAG);
|
||||
}
|
||||
wrong->hide();
|
||||
if(wrong->items() > 0)
|
||||
wrong->destroy();
|
||||
right->hide();
|
||||
if (right->items() > 0)
|
||||
right->destroy();
|
||||
return *right;
|
||||
}
|
||||
|
||||
void TSpe_check_msk::fill_ninvio()
|
||||
{
|
||||
TString query = "USE MOV\n";
|
||||
query << R"(SELECT (23.REG!="")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=")" << get(F_TIPOCF) << "\")";
|
||||
if (get(F_CODCF).full())
|
||||
query << "&&STR((23.CODCF=#CODCF))";
|
||||
|
||||
TISAM_recordset rset(query);
|
||||
|
||||
TDate dadatareg = get_date(F_DATAINI);
|
||||
if (!dadatareg.ok())
|
||||
{
|
||||
dadatareg = TDate(01, 01, 2017);
|
||||
set(F_DATAINI, dadatareg);
|
||||
}
|
||||
|
||||
TDate adatareg = get_date(F_DATAFIN);
|
||||
if (!adatareg.ok())
|
||||
{
|
||||
adatareg = TDate(TODAY);
|
||||
set(F_DATAFIN, adatareg);
|
||||
}
|
||||
|
||||
// Setto le variabili
|
||||
rset.set_var("#DADATAREG", dadatareg);
|
||||
rset.set_var("#ADATAREG", adatareg);
|
||||
if (get(F_CODCF).full())
|
||||
rset.set_var("#CODCF", get(F_CODCF));
|
||||
|
||||
int nrec = rset.items();
|
||||
|
||||
TSheet_field& s = get_sfield(F_NOTSEND);
|
||||
|
||||
|
||||
if (nrec <= 0) return;
|
||||
|
||||
for (bool ok = rset.move_first(); ok; ok = rset.move_next())
|
||||
{
|
||||
// Devo prendere tutti quelli che non vanno bene di records
|
||||
|
||||
TRectype clifo = getCli(rset.get("23.TIPO").as_string(), rset.get("23.CODCF").as_string(), rset.get("23.OCCAS").as_string());
|
||||
if (rset.get("23.TFINVIO").as_string() != "I")
|
||||
{
|
||||
TToken_string& row = s.row(-1);
|
||||
|
||||
row.add(rset.get("23.NUMREG").as_int(), 0);
|
||||
row.add(rset.get("23.DATAREG").as_date());
|
||||
row.add(rset.get("23.ANNOES").as_int());
|
||||
row.add(rset.get("23.NUMDOC").as_int());
|
||||
row.add(rset.get("23.NUMDOCEXT").as_int());
|
||||
|
||||
row.add(rset.get("23.TIPODOC").as_string());
|
||||
row.add(rset.get("23.DESCR").as_string());
|
||||
row.add(rset.get("23.CODCF").as_int());
|
||||
row.add(rset.get("23.TOTDOC").as_real());
|
||||
row.add(rev_charge(rset.get("NUMREG").as_string(), rset.get("23.DATAREG").as_date().year())), s.cid2index(A_REVERSE);
|
||||
row.add(rset.get("23.TFINVIO").as_string().empty()? "X" : rset.get("23.TFINVIO").as_string());
|
||||
}
|
||||
}
|
||||
s.force_update();
|
||||
s.show();
|
||||
enable_edit(false);
|
||||
}
|
||||
|
||||
void TSpe_check_msk::refresh()
|
||||
{
|
||||
switch(get_long(F_TIPOCONTROLLO))
|
||||
@ -123,6 +222,8 @@ void TSpe_check_msk::refresh()
|
||||
break;
|
||||
case 2:
|
||||
fill_cust();
|
||||
case 3:
|
||||
fill_ninvio();
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -164,19 +265,12 @@ void TSpe_check_msk::fill_no_filter()
|
||||
|
||||
int nrec = rset.items();
|
||||
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
|
||||
if(s.items() > 0)
|
||||
s.destroy();
|
||||
TSheet_field& s = get_sfield(F_RIGHE);
|
||||
|
||||
if(nrec <= 0) return;
|
||||
// Nascondo lo sheet
|
||||
s.hide();
|
||||
|
||||
for(bool ok = rset.move_first(); ok; ok = rset.move_next())
|
||||
{
|
||||
// Devo prendere tutti quelli che non vanno bene di records
|
||||
if(check_record(&rset, _has_fp)) continue;
|
||||
|
||||
TRectype clifo = getCli(rset.get("23.TIPO").as_string(), rset.get("23.CODCF").as_string(), rset.get("23.OCCAS").as_string());
|
||||
TToken_string& row = s.row(-1);
|
||||
@ -230,7 +324,7 @@ void TSpe_check_msk::fill_diff()
|
||||
// Apro la tabella TRASFATT e per ogni record lo ricostruisco l'originale
|
||||
TString query = "USE TRASFATT\n";
|
||||
query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&NUMREG<" << MOV_CUSTOM << "&&(TIPO=\"" << get(F_TIPOCF) << "\")";
|
||||
if(get(F_CODCF) != "")
|
||||
if(get(F_CODCF).full())
|
||||
query << "&&STR((CODCF=#CODCF))";
|
||||
|
||||
get_fil_flag(query);
|
||||
@ -253,18 +347,14 @@ void TSpe_check_msk::fill_diff()
|
||||
// Setto le variabili
|
||||
rset.set_var("#DADATAREG", dadatareg);
|
||||
rset.set_var("#ADATAREG", adatareg);
|
||||
if(get(F_CODCF) != "")
|
||||
if(get(F_CODCF).full())
|
||||
rset.set_var("#CODCF", get(F_CODCF));
|
||||
|
||||
int nrec = rset.items();
|
||||
|
||||
TSheet_field& s = sfield(F_RIGHE);
|
||||
if(s.items() > 0)
|
||||
s.destroy();
|
||||
TSheet_field& s = get_sfield(F_RIGHE);
|
||||
|
||||
if(nrec <= 0) return;
|
||||
// Nascondo lo sheet
|
||||
s.hide();
|
||||
|
||||
TString nat;
|
||||
|
||||
@ -407,7 +497,7 @@ void TSpe_check_msk::fill_cust()
|
||||
{
|
||||
TString query = "USE TRASFATT\n";
|
||||
query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")";
|
||||
if(get(F_CODCF) != "")
|
||||
if(get(F_CODCF).full())
|
||||
query << "&&STR((CODCF=#CODCF))";
|
||||
|
||||
get_fil_flag(query);
|
||||
@ -431,7 +521,7 @@ void TSpe_check_msk::fill_cust()
|
||||
// Setto le variabili
|
||||
rset.set_var("#DADATAREG", dadatareg);
|
||||
rset.set_var("#ADATAREG", adatareg);
|
||||
if(get(F_CODCF) != "")
|
||||
if(get(F_CODCF).full())
|
||||
rset.set_var("#CODCF", get(F_CODCF));
|
||||
|
||||
int nrec = rset.items();
|
||||
@ -625,6 +715,7 @@ void TSpe_check_msk::delete_all()
|
||||
|
||||
TSpe_check_msk::TSpe_check_msk() : TAutomask("tf0400a")
|
||||
{
|
||||
sfield(F_NOTSEND).hide();
|
||||
_ditta.init(LF_NDITTE, prefix().get_codditta());
|
||||
_selected = false;
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
#define F_TIPOCONTROLLO 301
|
||||
#define F_FLAG 302
|
||||
#define F_DATAINI 303
|
||||
#define F_DATAFIN 304
|
||||
#define F_CODCF 305
|
||||
#define F_TIPOCF 306
|
||||
#define F_RAGSOC 307
|
||||
#define F_TIPOCONTROLLO 401
|
||||
#define F_FLAG 402
|
||||
#define F_DATAINI 403
|
||||
#define F_DATAFIN 404
|
||||
#define F_CODCF 405
|
||||
#define F_TIPOCF 406
|
||||
#define F_RAGSOC 407
|
||||
|
||||
#define F_RIGHE 201 // Sheet righe tf
|
||||
|
||||
@ -30,4 +30,18 @@
|
||||
#define A_REVERSE 120
|
||||
#define A_AUTOFATT 121
|
||||
#define A_SPEDITA 122
|
||||
#define A_NUMERO 123
|
||||
#define A_NUMERO 123
|
||||
|
||||
#define F_NOTSEND 301
|
||||
|
||||
#define B_NUMREG 101
|
||||
#define B_DATAREG 102
|
||||
#define B_ANNOES 103
|
||||
#define B_NUMDOC 104
|
||||
#define B_NUMDOCEXT 105
|
||||
#define B_TIPODOC 106
|
||||
#define B_DESC 107
|
||||
#define B_CODCF 108
|
||||
#define B_TOTDOC 109
|
||||
#define B_REVCHARGE 110
|
||||
#define B_TFINVIO 111
|
@ -43,6 +43,7 @@ BEGIN
|
||||
ITEM "0|Movimenti ignorati"
|
||||
ITEM "1|Differenze Prima Nota/TF"
|
||||
ITEM "2|Mostra tutti i movimenti modificati"
|
||||
ITEM "3|Movimenti non inviati"
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
@ -141,6 +142,23 @@ BEGIN
|
||||
DEFAULT "*" // Impedisce il salvataggio su profilo .ini
|
||||
END
|
||||
|
||||
SPREADSHEET F_NOTSEND
|
||||
BEGIN
|
||||
PROMPT 0 8 "Righe movimenti non inviati"
|
||||
ITEM "Numero\n Reg.@7"
|
||||
ITEM "Data\nReg.@8"
|
||||
ITEM "Anno\nEs.@4"
|
||||
ITEM "Numero\nDocumento@8"
|
||||
ITEM "Numero\nDocum. Esteso@20"
|
||||
ITEM "Tipo\nDocum.@5"
|
||||
ITEM "Descrizione@40"
|
||||
ITEM "Cod. C/F@6"
|
||||
ITEM "Totale\nDocum.@18"
|
||||
ITEM "Reverse\ncharge@5"
|
||||
ITEM "INVIO@5"
|
||||
FLAG "H"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
@ -383,5 +401,102 @@ BEGIN
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
|
||||
PAGE "NOTSEND" -1 -1 69 14
|
||||
|
||||
NUMBER B_NUMREG 7 0
|
||||
BEGIN
|
||||
PROMPT 0 0 "Numero Reg."
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
DATE B_DATAREG
|
||||
BEGIN
|
||||
PROMPT 0 1 "Data Reg."
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER B_ANNOES 4 0
|
||||
BEGIN
|
||||
PROMPT 0 2 "Anno Es."
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER B_NUMDOC 7 0
|
||||
BEGIN
|
||||
PROMPT 0 3 "Numero Documento"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER B_NUMDOCEXT 50 0
|
||||
BEGIN
|
||||
PROMPT 0 4 "Numero Docum. Esteso"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING B_TIPODOC 2
|
||||
BEGIN
|
||||
PROMPT 0 5 "Tipo Docum."
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING B_DESC 50
|
||||
BEGIN
|
||||
PROMPT 0 6 "Descrizione"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER B_CODCF 6 0
|
||||
BEGIN
|
||||
PROMPT 0 7 "Cod. C/F"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
NUMBER B_TOTDOC 18 3
|
||||
BEGIN
|
||||
PROMPT 0 8 "Totale Docum."
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_REVCHARGE
|
||||
BEGIN
|
||||
PROMPT 0 9 "Reverse charge"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING B_TFINVIO 1
|
||||
BEGIN
|
||||
PROMPT 0 10 "INVIO"
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_USER 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Collega"
|
||||
PICTURE TOOL_LINK
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
PICTURE TOOL_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
@ -142,16 +142,16 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
||||
TRectype rdoc(LF_DOC);
|
||||
static TLocalisamfile doc(LF_DOC);
|
||||
rdoc.put(DOC_PROVV, rec->get("23.DPROVV").as_string());
|
||||
rdoc.put(DOC_PROVV, rec->get("23.DANNO").as_string());
|
||||
rdoc.put(DOC_PROVV, rec->get("23.DCODNUM").as_string());
|
||||
rdoc.put(DOC_PROVV, rec->get("23.DNDOC").as_string());
|
||||
rdoc.put(DOC_ANNO, rec->get("23.DANNO").as_string());
|
||||
rdoc.put(DOC_CODNUM, rec->get("23.DCODNUM").as_string());
|
||||
rdoc.put(DOC_NDOC, rec->get("23.DNDOC").as_string());
|
||||
|
||||
// Se riesco a generare la chiave, trovo il record e ha il flag di gestione in errore o un errore esterno, so che è stato inviato
|
||||
// Se riesco a generare la chiave, trovo il record e non ha il flag di gestione in errore o un errore esterno, so che è stato inviato
|
||||
const bool is_sent = rdoc.read(doc) == NOERR && chiave_paf(rdoc, hfatt, bfatt) && paf0100f.search(nullptr, hfatt, bfatt) && paf0100f.sq_get("P1_GESTIONE") != "E" && paf0100f.sq_get("P1_ERREST") != "*";
|
||||
|
||||
// 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))
|
||||
if ((!is_sent && paf_sent) || (is_sent && paf_not_sent))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@ -201,25 +201,25 @@ bool check_record(TISAM_recordset* rec, const bool mod_esterometro,
|
||||
{
|
||||
// Parte Sirio FP w/ WebApp
|
||||
// Faccio controlli per evitare controlli
|
||||
if (paf_not_sent && paf_sent)
|
||||
if (paa_not_sent && paa_sent)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (paf_not_sent || paf_sent)
|
||||
else if (paa_not_sent || paa_sent)
|
||||
{
|
||||
// Disabilitato, non si vuole implementare al momento
|
||||
return false;
|
||||
}
|
||||
// Parte tirchi che non comprano la mia WebApp
|
||||
// Solito controllo per evitare controlli
|
||||
else if (paf_sog_fat && paf_esteri)
|
||||
else if (paa_sog_fat && paa_esteri)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
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))
|
||||
if ((is_fatturabile && !paa_sog_fat) || (is_fatturabile && paa_esteri))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user