2017-07-28 08:20:30 +00:00
|
|
|
|
#include "tf0400a.h"
|
|
|
|
|
#include "tfutility.h"
|
|
|
|
|
|
|
|
|
|
#include <applicat.h>
|
|
|
|
|
#include <automask.h>
|
|
|
|
|
#include <config.h>
|
|
|
|
|
#include <recset.h>
|
|
|
|
|
#include <recarray.h> // cache()
|
2017-08-29 13:24:37 +00:00
|
|
|
|
#include "felib.h" // TAnagrafica
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/****************************************************************************************************
|
|
|
|
|
* TSpeCheck_msk
|
|
|
|
|
****************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
class TSpeCheck_msk : public TAutomask
|
|
|
|
|
{
|
2017-08-29 13:24:37 +00:00
|
|
|
|
private:
|
|
|
|
|
TAnagrafica _ditta;
|
|
|
|
|
bool _selected;
|
|
|
|
|
|
|
|
|
|
void refresh();
|
2017-07-28 08:20:30 +00:00
|
|
|
|
void fillNoFilter();
|
|
|
|
|
void fillDiff();
|
2017-08-29 13:24:37 +00:00
|
|
|
|
void foundHomeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo);
|
2017-07-28 08:20:30 +00:00
|
|
|
|
void fillCust();
|
|
|
|
|
void getFilFlag(TString& query);
|
|
|
|
|
void enableEdit(bool en);
|
2017-08-29 13:24:37 +00:00
|
|
|
|
void selectAll();
|
|
|
|
|
void saveAll();
|
|
|
|
|
void deleteAll();
|
2017-07-28 08:20:30 +00:00
|
|
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
|
|
|
public:
|
2017-08-29 13:24:37 +00:00
|
|
|
|
TSpeCheck_msk();
|
|
|
|
|
virtual ~TSpeCheck_msk() {};
|
2017-07-28 08:20:30 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
bool TSpeCheck_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
|
|
|
{
|
|
|
|
|
switch(o.dlg())
|
|
|
|
|
{
|
|
|
|
|
case DLG_RECALC:
|
|
|
|
|
if(e != fe_button) break;
|
2017-08-29 13:24:37 +00:00
|
|
|
|
refresh();
|
|
|
|
|
break;
|
2017-07-28 08:20:30 +00:00
|
|
|
|
case F_TIPOCONTROLLO:
|
2017-08-29 13:24:37 +00:00
|
|
|
|
if(e != fe_modify) break;
|
|
|
|
|
refresh();
|
|
|
|
|
break;
|
|
|
|
|
case DLG_ALL:
|
|
|
|
|
if(e != fe_button) break;
|
|
|
|
|
selectAll();
|
|
|
|
|
break;
|
|
|
|
|
case DLG_SAVEREC:
|
|
|
|
|
saveAll();
|
|
|
|
|
break;
|
|
|
|
|
case DLG_DELREC:
|
|
|
|
|
deleteAll();
|
2017-07-28 08:20:30 +00:00
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
2017-08-29 13:24:37 +00:00
|
|
|
|
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2017-08-29 13:24:37 +00:00
|
|
|
|
void TSpeCheck_msk::refresh()
|
|
|
|
|
{
|
|
|
|
|
switch(get_long(F_TIPOCONTROLLO))
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
fillNoFilter();
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
fillDiff();
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
fillCust();
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2017-07-28 08:20:30 +00:00
|
|
|
|
void TSpeCheck_msk::fillNoFilter()
|
|
|
|
|
{
|
|
|
|
|
TString query = "USE RMOVIVA\n";
|
|
|
|
|
query << "SELECT (23.REG!=\"\")&&BETWEEN(23.DATAREG,#DADATAREG,#ADATAREG)&&(23.TIPO=\"" << get(F_TIPOCF) << "\")";
|
|
|
|
|
if(get(F_CODCF) != "")
|
|
|
|
|
query << "&&STR((23.CODCF=#CODCF))";
|
|
|
|
|
|
|
|
|
|
getFilFlag(query);
|
2017-08-29 13:24:37 +00:00
|
|
|
|
|
|
|
|
|
query << "\nJOIN MOV INTO NUMREG==NUMREG\n";
|
|
|
|
|
|
|
|
|
|
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) != "")
|
|
|
|
|
rset.set_var("#CODCF", get(F_CODCF));
|
|
|
|
|
|
|
|
|
|
int nrec = rset.items();
|
|
|
|
|
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
if(s.items() > 0)
|
|
|
|
|
s.destroy();
|
|
|
|
|
|
|
|
|
|
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(checkRecord(&rset)) 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);
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("23.DATAREG").as_string(), s.cid2index(A_DATAREG));
|
|
|
|
|
row.add(rset.get("23.TIPODOC").as_string(), s.cid2index(A_TIPODOC));
|
|
|
|
|
row.add(rset.get("23.NUMDOC").as_string(), s.cid2index(A_NUMDOC));
|
|
|
|
|
row.add(rset.get("23.DATADOC").as_string(), s.cid2index(A_DATADOC));
|
|
|
|
|
row.add(rset.get("25.CODIVA").as_string(), s.cid2index(A_ALIQUOTA));
|
|
|
|
|
row.add(rset.get("25.IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE));
|
|
|
|
|
row.add(rset.get("25.IMPOSTA").as_string(), s.cid2index(A_IMPOSTA));
|
|
|
|
|
// NATURA
|
|
|
|
|
row.add(natura(rset.get("25.CODIVA").as_string()), s.cid2index(A_NATURA));
|
|
|
|
|
// DETR
|
|
|
|
|
row.add(findDetraib(rset.get("25.TIPODET").as_string()), s.cid2index(A_DETRAIB));
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("23.TIPO").as_string(), s.cid2index(A_TIPOCF));
|
|
|
|
|
row.add(rset.get("23.CODCF").as_string(), s.cid2index(A_CODCF));
|
|
|
|
|
row.add(rset.get("23.OCCAS").as_string(), s.cid2index(A_OCFPI));
|
|
|
|
|
// RSOC
|
|
|
|
|
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
|
|
|
|
// RFSO
|
|
|
|
|
row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO));
|
|
|
|
|
// RSOC RFSO
|
|
|
|
|
row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
|
|
|
|
// RC
|
|
|
|
|
row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE));
|
|
|
|
|
// AUTOFATT
|
|
|
|
|
if(_ditta.partita_IVA() == clifo.get("PAIV"))
|
|
|
|
|
{
|
|
|
|
|
row.add("X", s.cid2index(A_AUTOFATT));
|
|
|
|
|
row.add(_ditta.partita_IVA(), s.cid2index(A_PAIV));
|
|
|
|
|
row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt
|
|
|
|
|
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
|
|
|
|
|
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
|
|
|
|
|
}
|
|
|
|
|
row.add(rset.get("23.TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA));
|
|
|
|
|
row.add(rset.get("23.NUMREG").as_string(), s.cid2index(A_NUMERO));
|
|
|
|
|
}
|
|
|
|
|
s.force_update();
|
|
|
|
|
s.show();
|
|
|
|
|
enableEdit(false);
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
|
|
|
|
void TSpeCheck_msk::fillDiff()
|
|
|
|
|
{
|
2017-08-29 13:24:37 +00:00
|
|
|
|
// 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) != "")
|
|
|
|
|
query << "&&STR((CODCF=#CODCF))";
|
|
|
|
|
|
|
|
|
|
getFilFlag(query);
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
2017-08-29 13:24:37 +00:00
|
|
|
|
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) != "")
|
|
|
|
|
rset.set_var("#CODCF", get(F_CODCF));
|
|
|
|
|
|
|
|
|
|
int nrec = rset.items();
|
|
|
|
|
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
if(s.items() > 0)
|
|
|
|
|
s.destroy();
|
|
|
|
|
|
|
|
|
|
if(nrec <= 0) return;
|
|
|
|
|
// Nascondo lo sheet
|
|
|
|
|
s.hide();
|
|
|
|
|
|
|
|
|
|
TString nat;
|
|
|
|
|
|
|
|
|
|
for(bool ok = rset.move_first(); ok; ok = rset.move_next())
|
|
|
|
|
{
|
|
|
|
|
TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string());
|
|
|
|
|
|
|
|
|
|
// Creo la riga della prima nota
|
|
|
|
|
TToken_string& orig = s.row(-1);
|
|
|
|
|
foundHomeland(orig, rset.get("NUMREG").as_string(), rset.get("CODIVA").as_string(), clifo);
|
|
|
|
|
|
|
|
|
|
TToken_string& row = s.row(-1);
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG));
|
|
|
|
|
row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC));
|
|
|
|
|
row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC));
|
|
|
|
|
row.add(rset.get("DATADOC").as_string(), s.cid2index(A_DATADOC));
|
|
|
|
|
row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA));
|
|
|
|
|
row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE));
|
|
|
|
|
row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA));
|
|
|
|
|
// NATURA
|
|
|
|
|
nat.cut(0) << rset.get("NATURA").as_string();
|
|
|
|
|
row.add(nat.full() ? nat : natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA));
|
|
|
|
|
// DETR
|
|
|
|
|
row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB));
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("TIPO").as_string(), s.cid2index(A_TIPOCF));
|
|
|
|
|
row.add(rset.get("CODCF").as_string(), s.cid2index(A_CODCF));
|
|
|
|
|
row.add(rset.get("OCCAS").as_string(), s.cid2index(A_OCFPI));
|
|
|
|
|
// RSOC
|
|
|
|
|
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
|
|
|
|
// RFSO
|
|
|
|
|
row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO));
|
|
|
|
|
// RSOC RFSO
|
|
|
|
|
row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
|
|
|
|
// RC
|
|
|
|
|
row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE));
|
|
|
|
|
// AUTOFATT
|
|
|
|
|
if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV"))
|
|
|
|
|
{
|
|
|
|
|
row.add("X", s.cid2index(A_AUTOFATT));
|
|
|
|
|
row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV));
|
|
|
|
|
row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt
|
|
|
|
|
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
|
|
|
|
|
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
|
|
|
|
|
}
|
|
|
|
|
row.add(rset.get("TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA));
|
|
|
|
|
row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO));
|
|
|
|
|
}
|
|
|
|
|
s.force_update();
|
|
|
|
|
s.show();
|
|
|
|
|
enableEdit(true);
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
2017-08-29 13:24:37 +00:00
|
|
|
|
|
|
|
|
|
void TSpeCheck_msk::foundHomeland(TToken_string& row, TString numreg, TString codiva, TRectype& clifo)
|
2017-07-28 08:20:30 +00:00
|
|
|
|
{
|
2017-08-29 13:24:37 +00:00
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
static TLocalisamfile mov(LF_MOV), rmov(LF_RMOVIVA);
|
|
|
|
|
TRectype recMov(LF_MOV), recRmov(LF_RMOVIVA);
|
|
|
|
|
|
|
|
|
|
recMov.put("NUMREG", numreg);
|
|
|
|
|
recRmov.put("NUMREG", numreg);
|
|
|
|
|
mov.read(recMov);
|
|
|
|
|
rmov.read(recRmov);
|
|
|
|
|
|
|
|
|
|
real imponibile = ZERO, imposta = ZERO;
|
|
|
|
|
|
|
|
|
|
while(!rmov.eof())
|
|
|
|
|
{
|
|
|
|
|
// Mi sposto se il codice IVA non <20> quello che mi serve
|
|
|
|
|
while(recRmov.get("NUMREG") == numreg && recRmov.get("CODIVA") != codiva)
|
|
|
|
|
{
|
|
|
|
|
++rmov;
|
|
|
|
|
recRmov = rmov.curr();
|
|
|
|
|
}
|
|
|
|
|
if(recRmov.get("NUMREG") != numreg) break;
|
|
|
|
|
imponibile += recRmov.get_real("IMPONIBILE");
|
|
|
|
|
imposta += recRmov.get_real("IMPOSTA");
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
2017-08-29 13:24:37 +00:00
|
|
|
|
// Mi sposto
|
|
|
|
|
++rmov;
|
|
|
|
|
recRmov = 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));
|
|
|
|
|
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));
|
|
|
|
|
// DETR
|
|
|
|
|
row.add(findDetraib(recRmov.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));
|
|
|
|
|
// RSOC
|
|
|
|
|
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
|
|
|
|
// RFSO
|
|
|
|
|
row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO));
|
|
|
|
|
// RSOC RFSO
|
|
|
|
|
row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
|
|
|
|
// RC
|
|
|
|
|
row.add((revCharge(recMov.get("NUMREG"))), s.cid2index(A_REVERSE));
|
|
|
|
|
// AUTOFATT
|
|
|
|
|
if(_ditta.partita_IVA() == clifo.get("PAIV"))
|
|
|
|
|
{
|
|
|
|
|
row.add("X", s.cid2index(A_AUTOFATT));
|
|
|
|
|
row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV));
|
|
|
|
|
row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt
|
|
|
|
|
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));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TSpeCheck_msk::fillCust()
|
|
|
|
|
{
|
2017-07-28 08:20:30 +00:00
|
|
|
|
TString query = "USE TRASFATT\n";
|
|
|
|
|
query << "SELECT BETWEEN(DATAREG,#DADATAREG,#ADATAREG)&&(TIPO=\"" << get(F_TIPOCF) << "\")";
|
|
|
|
|
if(get(F_CODCF) != "")
|
|
|
|
|
query << "&&STR((CODCF=#CODCF))";
|
|
|
|
|
|
|
|
|
|
getFilFlag(query);
|
|
|
|
|
|
|
|
|
|
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) != "")
|
|
|
|
|
rset.set_var("#CODCF", get(F_CODCF));
|
|
|
|
|
|
|
|
|
|
int nrec = rset.items();
|
|
|
|
|
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
2017-08-29 13:24:37 +00:00
|
|
|
|
if(s.items() > 0)
|
|
|
|
|
s.destroy();
|
|
|
|
|
|
|
|
|
|
if(nrec <= 0) return;
|
|
|
|
|
|
2017-07-28 08:20:30 +00:00
|
|
|
|
// Nascondo lo sheet
|
|
|
|
|
s.hide();
|
2017-08-29 13:24:37 +00:00
|
|
|
|
TString nat;
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
|
|
|
|
for(bool ok = rset.move_first(); ok; ok = rset.move_next())
|
|
|
|
|
{
|
|
|
|
|
TRectype clifo = getCli(rset.get("TIPO").as_string(), rset.get("CODCF").as_string(), rset.get("OCCAS").as_string());
|
|
|
|
|
TToken_string& row = s.row(-1);
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("DATAREG").as_string(), s.cid2index(A_DATAREG));
|
|
|
|
|
row.add(rset.get("TIPODOC").as_string(), s.cid2index(A_TIPODOC));
|
|
|
|
|
row.add(rset.get("NUMDOC").as_string(), s.cid2index(A_NUMDOC));
|
2017-08-29 13:24:37 +00:00
|
|
|
|
row.add(rset.get("DATADOC").as_string(), s.cid2index(A_DATADOC));
|
2017-07-28 08:20:30 +00:00
|
|
|
|
row.add(rset.get("CODIVA").as_string(), s.cid2index(A_ALIQUOTA));
|
|
|
|
|
row.add(rset.get("IMPONIBILE").as_string(), s.cid2index(A_IMPONIBILE));
|
|
|
|
|
row.add(rset.get("IMPOSTA").as_string(), s.cid2index(A_IMPOSTA));
|
|
|
|
|
// NATURA
|
2017-08-29 13:24:37 +00:00
|
|
|
|
nat.cut(0) << rset.get("NATURA").as_string();
|
|
|
|
|
row.add(nat.full() ? nat : natura(rset.get("CODIVA").as_string()), s.cid2index(A_NATURA));
|
2017-07-28 08:20:30 +00:00
|
|
|
|
// DETR
|
|
|
|
|
row.add(findDetraib(rset.get("TIPODET").as_string()), s.cid2index(A_DETRAIB));
|
|
|
|
|
|
|
|
|
|
row.add(rset.get("TIPO").as_string(), s.cid2index(A_TIPOCF));
|
|
|
|
|
row.add(rset.get("CODCF").as_string(), s.cid2index(A_CODCF));
|
|
|
|
|
row.add(rset.get("OCCAS").as_string(), s.cid2index(A_OCFPI));
|
|
|
|
|
// RSOC
|
|
|
|
|
row.add(clifo.get("RAGSOC"), s.cid2index(A_RAGSOC));
|
|
|
|
|
// RFSO
|
|
|
|
|
row.add(clifo.get("CODRFSO"), s.cid2index(A_RFSO));
|
|
|
|
|
// RSOC RFSO
|
|
|
|
|
row.add(getRFSO(clifo.get("CODRFSO")), s.cid2index(A_RAGSOCRFSO));
|
|
|
|
|
// RC
|
|
|
|
|
row.add((revCharge(rset.get("NUMREG").as_string())), s.cid2index(A_REVERSE));
|
|
|
|
|
// AUTOFATT
|
2017-08-29 13:24:37 +00:00
|
|
|
|
if(rset.get("AUTOFATT").as_string() == "X" || _ditta.partita_IVA() == clifo.get("PAIV"))
|
2017-07-28 08:20:30 +00:00
|
|
|
|
{
|
2017-08-29 13:24:37 +00:00
|
|
|
|
row.add("X", s.cid2index(A_AUTOFATT));
|
|
|
|
|
row.add(_ditta.partita_IVA() , s.cid2index(A_PAIV));
|
|
|
|
|
row.add(_ditta.codice_fiscale(), s.cid2index(A_COFI));
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
row.add("", s.cid2index(A_AUTOFATT)); // AutoFatt
|
2017-08-29 13:24:37 +00:00
|
|
|
|
row.add(clifo.get("PAIV"), s.cid2index(A_PAIV)); // P.IVA
|
|
|
|
|
row.add(clifo.get("COFI"), s.cid2index(A_COFI)); // Codice Fiscale
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
2017-08-29 13:24:37 +00:00
|
|
|
|
row.add(rset.get("TFINVIO").as_bool() ? "X" : "", s.cid2index(A_SPEDITA));
|
2017-07-28 08:20:30 +00:00
|
|
|
|
row.add(rset.get("NUMREG").as_string(), s.cid2index(A_NUMERO));
|
|
|
|
|
}
|
|
|
|
|
s.force_update();
|
|
|
|
|
s.show();
|
|
|
|
|
enableEdit(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TSpeCheck_msk::getFilFlag(TString& query)
|
|
|
|
|
{
|
|
|
|
|
switch(get_int(F_FLAG))
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
query << "&&((TFINVIO=\"\")||(TFINVIO=\"X\")||(TFINVIO=\"F\")||(TFINVIO=\"E\"))";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
query << "&&(TFINVIO=\"I\")";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
query << "&&(TFINVIO=\"N\")";
|
|
|
|
|
case 0:
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TSpeCheck_msk::enableEdit(bool en)
|
|
|
|
|
{
|
|
|
|
|
// Abilito i bottoni
|
2017-08-29 13:24:37 +00:00
|
|
|
|
enable(DLG_ALL,en);
|
2017-07-28 08:20:30 +00:00
|
|
|
|
enable(DLG_SAVEREC,en);
|
2017-08-29 13:24:37 +00:00
|
|
|
|
enable(DLG_DELREC, en);
|
|
|
|
|
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
// Abilito/Disabilito le colonne
|
|
|
|
|
s.enable_column(s.cid2index(A_ELIMINA), en);
|
|
|
|
|
s.enable_column(s.cid2index(A_DATAREG),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_TIPODOC),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_NUMDOC),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_DATADOC),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_ALIQUOTA),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_IMPONIBILE),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_IMPOSTA),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_NATURA),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_TIPOCF),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_CODCF),en);
|
|
|
|
|
s.enable_column(s.cid2index(A_OCFPI),en);
|
|
|
|
|
}
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
2017-08-29 13:24:37 +00:00
|
|
|
|
void TSpeCheck_msk::selectAll()
|
|
|
|
|
{
|
|
|
|
|
_selected = !_selected;
|
2017-07-28 08:20:30 +00:00
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
2017-08-29 13:24:37 +00:00
|
|
|
|
FOR_EACH_SHEET_ROW(s, r, strarr)
|
|
|
|
|
{
|
|
|
|
|
strarr->add(_selected ? "X" : "", s.cid2index(A_ELIMINA));
|
|
|
|
|
}
|
|
|
|
|
s.force_update();
|
|
|
|
|
}
|
2017-07-28 08:20:30 +00:00
|
|
|
|
|
2017-08-29 13:24:37 +00:00
|
|
|
|
void TSpeCheck_msk::saveAll()
|
|
|
|
|
{
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
FOR_EACH_SHEET_ROW(s, r, strarr)
|
|
|
|
|
{
|
|
|
|
|
// Salto tutte le righe provenienti dalla prima nota
|
|
|
|
|
if(get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0) continue;
|
|
|
|
|
/* Salvo il record modificato in TFCustom */
|
|
|
|
|
static TLocalisamfile trasfatt(LF_TRASFATT);
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TSpeCheck_msk::deleteAll()
|
|
|
|
|
{
|
|
|
|
|
TSheet_field& s = sfield(F_RIGHE);
|
|
|
|
|
FOR_EACH_SHEET_ROW(s, r, strarr)
|
|
|
|
|
{
|
|
|
|
|
// Salto tutte le righe non selezionate e/o provenienti dalla prima nota
|
|
|
|
|
bool first = strcmp(strarr->get(s.cid2index(A_ELIMINA)), "X") != 0;
|
|
|
|
|
bool second = (get_long(F_TIPOCONTROLLO) == 1 && r % 2 == 0);
|
|
|
|
|
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)));
|
|
|
|
|
|
|
|
|
|
if(rCust.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;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
TSpeCheck_msk::TSpeCheck_msk() : TAutomask("tf0400a")
|
|
|
|
|
{
|
|
|
|
|
_ditta.init(LF_NDITTE, prefix().get_codditta());
|
|
|
|
|
_selected = false;
|
2017-07-28 08:20:30 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/****************************************************************************************************
|
|
|
|
|
* TSpeCheck_app
|
|
|
|
|
****************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
class TSpeCheck_app : public TSkeleton_application
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual void main_loop();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
TSpeCheck_app& app() { return (TSpeCheck_app&)main_app(); }
|
|
|
|
|
|
|
|
|
|
void TSpeCheck_app::main_loop()
|
|
|
|
|
{
|
|
|
|
|
TSpeCheck_msk msk;
|
|
|
|
|
msk.run();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int tf0400(int argc, char* argv[])
|
|
|
|
|
{
|
|
|
|
|
TSpeCheck_app app;
|
2017-08-30 12:48:04 +00:00
|
|
|
|
app.run(argc, argv, TR("Controlli Trasferimento fatture"));
|
2017-07-28 08:20:30 +00:00
|
|
|
|
return 0;
|
|
|
|
|
}
|