Patch level : 12.0 428
Files correlati : tf Commento : Inizio sviluppo programma di controllo spesometro, spostate alcune funzioni in tfutility per comodità git-svn-id: svn://10.65.10.50/branches/R_10_00@24008 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7996b8f5d3
commit
725ad83724
@ -10,11 +10,9 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
|
|
||||||
case 1 : rt = tf0200(argc, argv); break; // Comunicazione Liquidazioni Periodiche IVA
|
case 1 : rt = tf0200(argc, argv); break; // Comunicazione Liquidazioni Periodiche IVA
|
||||||
//case 2 : rt = tf0300(argc, argv); break; // Nuovo Spesometro (2017)
|
case 3: rt = tf0400(argc, argv); break; // Controllo Spesometro
|
||||||
//case 3: rt = tf0400(argc, argv); break; // Invio TF
|
|
||||||
case 4: rt = tf0500(argc, argv); break; // Invio IVA
|
case 4: rt = tf0500(argc, argv); break; // Invio IVA
|
||||||
//case 5: rt = tf0600(argc, argv); break; // Invio Spesometro
|
default: rt = tf0100(argc, argv); break; // Spesometro
|
||||||
default: rt = tf0100(argc, argv); break; // Trasferimento Fatture Elettroniche
|
|
||||||
}
|
}
|
||||||
return rt;
|
return rt;
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
int tf0100(int argc, char* argv[]);
|
int tf0100(int argc, char* argv[]);
|
||||||
int tf0200(int argc, char* argv[]);
|
int tf0200(int argc, char* argv[]);
|
||||||
|
int tf0400(int argc, char* argv[]);
|
||||||
int tf0500(int argc, char* argv[]);
|
int tf0500(int argc, char* argv[]);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -92,30 +92,6 @@ int getTipoDoc(TString id)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRectype getTrasFatt(TString reg, TString codiva)
|
|
||||||
{
|
|
||||||
TString key = reg; key << "|" << codiva;
|
|
||||||
return cache().get(LF_TRASFATT, key);
|
|
||||||
}
|
|
||||||
|
|
||||||
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi)
|
|
||||||
{
|
|
||||||
TString key = tipocf; key << "|" << codcf;
|
|
||||||
const TRectype& cli = cache().get(LF_CLIFO, key);
|
|
||||||
if(cli.get_bool("OCCAS"))
|
|
||||||
{
|
|
||||||
TRectype cli(LF_CLIFO);
|
|
||||||
TRectype occas = cache().get(LF_OCCAS, ocfpi);
|
|
||||||
cli.put("RAGSOC" , occas.get("RAGSOC"));
|
|
||||||
cli.put("CODRFSO" , "");
|
|
||||||
cli.put("PAIV" , occas.get("PAIV"));
|
|
||||||
cli.put("COFI" , occas.get("COFI"));
|
|
||||||
return cli;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return cli;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
|
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str)
|
||||||
{
|
{
|
||||||
@ -149,14 +125,6 @@ bool xvt_fsys_fupdate(const char* src, const char* dst)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Controlla se l'azienda ha un RFSO
|
|
||||||
bool haveRFSO(TString& codrfso)
|
|
||||||
{
|
|
||||||
codrfso = cache().get(LF_NDITTE, prefix().firm().codice(), "CODRFSO");
|
|
||||||
if(codrfso == "") return false;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ritorno il tipo di documento
|
/* Ritorno il tipo di documento
|
||||||
* TD01: Fattura
|
* TD01: Fattura
|
||||||
* TD04: Nota di credito
|
* TD04: Nota di credito
|
||||||
@ -914,8 +882,6 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
fo = true;
|
fo = true;
|
||||||
if(cli || fo) break;
|
if(cli || fo) break;
|
||||||
}
|
}
|
||||||
// Metto qua il numero di telefono per dopo
|
|
||||||
TString80 tel; tel << firm.get("PTEL") << firm.get("TEL");
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
if(cli)
|
if(cli)
|
||||||
{
|
{
|
||||||
@ -946,8 +912,6 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
dte.set("P1_TRASMITTPAESE", paese);
|
dte.set("P1_TRASMITTPAESE", paese);
|
||||||
dte.set("P1_TRASMITTCOD", "");
|
dte.set("P1_TRASMITTCOD", "");
|
||||||
dte.set("P1_TIPOINVIO", "DTE");
|
dte.set("P1_TIPOINVIO", "DTE");
|
||||||
dte.set("P1_TELEFONO", tel);
|
|
||||||
dte.set("P1_MAIL", firm.get("MAIL"));
|
|
||||||
dte.set("P1_GESTIONE", "");
|
dte.set("P1_GESTIONE", "");
|
||||||
ok = dte.insert();
|
ok = dte.insert();
|
||||||
if(!ok) return false;
|
if(!ok) return false;
|
||||||
@ -983,8 +947,6 @@ bool TTrFa_app::tff0100(TSheet_field& sheet)
|
|||||||
dtr.set("P1_TRASMITTPAESE", paese);
|
dtr.set("P1_TRASMITTPAESE", paese);
|
||||||
dtr.set("P1_TRASMITTCOD", "");
|
dtr.set("P1_TRASMITTCOD", "");
|
||||||
dtr.set("P1_TIPOINVIO", "DTR");
|
dtr.set("P1_TIPOINVIO", "DTR");
|
||||||
dtr.set("P1_TELEFONO", tel);
|
|
||||||
dtr.set("P1_MAIL", firm.get("MAIL"));
|
|
||||||
dtr.set("P1_GESTIONE", "");
|
dtr.set("P1_GESTIONE", "");
|
||||||
ok = dtr.insert();
|
ok = dtr.insert();
|
||||||
if(!ok) return false;
|
if(!ok) return false;
|
||||||
@ -1112,7 +1074,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
TVariant vtipocf = strarr->get(_tipocf), vcodcf = strarr->get(_codcf), voccas = strarr->get(_occas);
|
TVariant vtipocf = strarr->get(_tipocf), vcodcf = strarr->get(_codcf), voccas = strarr->get(_occas);
|
||||||
|
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if(vtipocf.as_string() == "F" && vcodcf.as_string() == "358")
|
if(vtipocf.as_string() == "C" && vcodcf.as_string() == "316")
|
||||||
bool tolla = true;
|
bool tolla = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1185,7 +1147,7 @@ bool TTrFa_app::tff0400(TSheet_field& sheet)
|
|||||||
{
|
{
|
||||||
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
|
// Sono sicuro che se è di tipo 3,7 o 8 ha la ragione sociale
|
||||||
char tipo = r_cedeprest.get_char(CLI_ALLEG);
|
char tipo = r_cedeprest.get_char(CLI_ALLEG);
|
||||||
bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8');
|
bool rsoc = cedeprest.giuridica() || (tipo == '3' || tipo == '7' || tipo == '8' || tipo == '\0');
|
||||||
bool privato = tipo == '6';
|
bool privato = tipo == '6';
|
||||||
|
|
||||||
if (!rsoc)
|
if (!rsoc)
|
||||||
|
@ -181,8 +181,6 @@ BEGIN
|
|||||||
ITEM "Rev.\nCharge@4"
|
ITEM "Rev.\nCharge@4"
|
||||||
ITEM "Auto\nfatt.@3"
|
ITEM "Auto\nfatt.@3"
|
||||||
ITEM "Spedita@5"
|
ITEM "Spedita@5"
|
||||||
ITEM "Invio@3"
|
|
||||||
ITEM "Mod.@3"
|
|
||||||
ITEM "N.\nRegistraz.@10"
|
ITEM "N.\nRegistraz.@10"
|
||||||
ITEM "Codici Errori@10"
|
ITEM "Codici Errori@10"
|
||||||
DEFAULT "*" // Impedisce il salvataggio su profilo .ini
|
DEFAULT "*" // Impedisce il salvataggio su profilo .ini
|
||||||
@ -361,7 +359,6 @@ BEGIN
|
|||||||
DISPLAY "Vent." S6
|
DISPLAY "Vent." S6
|
||||||
DISPLAY "Sospeso" B2
|
DISPLAY "Sospeso" B2
|
||||||
OUTPUT A_ALIQUOTA CODTAB
|
OUTPUT A_ALIQUOTA CODTAB
|
||||||
HELP "Codice IVA"
|
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
VALIDATE ZEROFILL_FUNC 2
|
VALIDATE ZEROFILL_FUNC 2
|
||||||
END
|
END
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include "../fe/felib.h"
|
#include "../fe/felib.h"
|
||||||
|
|
||||||
#include "tf0100a.h"
|
#include "tf0100a.h"
|
||||||
|
#include "tfutility.h"
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
// Globals
|
// Globals
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
@ -95,16 +96,11 @@ enum spesometroFields{
|
|||||||
// Da un id ritorna il tipo doc corrispondente
|
// Da un id ritorna il tipo doc corrispondente
|
||||||
TString getTipoDoc(int id);
|
TString getTipoDoc(int id);
|
||||||
int getTipoDoc(TString id);
|
int getTipoDoc(TString id);
|
||||||
// Ritorna il record custom
|
|
||||||
TRectype getTrasFatt(TString reg, TString codiva);
|
|
||||||
// Ritorna il cliente in un record di $clifo, con tipocf = "O" lo cerca in $occas
|
|
||||||
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi);
|
|
||||||
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
// Cerca una stringa all'interno di una SLIST (Potrebbe diventare una funzione di XVT.h)
|
||||||
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
static SLIST_ELT xvt_slist_find_str(SLIST list, const char* str);
|
||||||
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
|
// Aggiorna il file dst se più vecchio di src (Potrebbe diventare una funzione di XVT.h)
|
||||||
bool xvt_fsys_fupdate(const char* src, const char* dst);
|
bool xvt_fsys_fupdate(const char* src, const char* dst);
|
||||||
// Controlla se l'azienda ha un RFSO
|
|
||||||
bool haveRFSO(TString& codrfso);
|
|
||||||
// Decodifica il tipo di documento per il trasferimento fatture
|
// Decodifica il tipo di documento per il trasferimento fatture
|
||||||
const char * decodTipo(TToken_string* strarr);
|
const char * decodTipo(TToken_string* strarr);
|
||||||
// Salvo un singolo record
|
// Salvo un singolo record
|
||||||
@ -202,11 +198,6 @@ class TTrFa_mask : public TAutomask
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void next_page(int p);
|
virtual void next_page(int p);
|
||||||
const char * natura(const TString& codiva) const;
|
|
||||||
real get_IVA(const TString& codiva) const;
|
|
||||||
TString findDetraib(TString tipodet) const;
|
|
||||||
TString revCharge(TString numreg) const;
|
|
||||||
TString getRFSO(TString codrfso) const;
|
|
||||||
TRecnotype nuovo_progr() const;
|
TRecnotype nuovo_progr() const;
|
||||||
void changeInvio(TString tipocf, TString codcf, TString numdoc, TString invio) const;
|
void changeInvio(TString tipocf, TString codcf, TString numdoc, TString invio) const;
|
||||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
@ -494,7 +494,7 @@ bool TTrFa_mask::checkRec(TPrinter* stampa, TToken_string* rec)
|
|||||||
coderr << "3;";
|
coderr << "3;";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(decodTipo(rec) == "ERR")
|
if(decodTipo(rec) == "ERR0")
|
||||||
{
|
{
|
||||||
ok = false;
|
ok = false;
|
||||||
msgerr.cut(0) << "Non riesco a determinare il tipo di documento corretto per l'agenzia delle entrate!";
|
msgerr.cut(0) << "Non riesco a determinare il tipo di documento corretto per l'agenzia delle entrate!";
|
||||||
@ -612,8 +612,8 @@ void TTrFa_mask::load_sheet()
|
|||||||
}
|
}
|
||||||
//TString key; key << "TIPOA=" << prefix().firm().get("TIPOA")<< ",CODANAGR=" << prefix().firm().get("CODANAGR");
|
//TString key; key << "TIPOA=" << prefix().firm().get("TIPOA")<< ",CODANAGR=" << prefix().firm().get("CODANAGR");
|
||||||
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
||||||
const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV");
|
static const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV");
|
||||||
const TString cofiDitta = cache().get(LF_ANAG, key, "COFI");
|
static const TString cofiDitta = cache().get(LF_ANAG, key, "COFI");
|
||||||
|
|
||||||
TTrFa_cursors c;
|
TTrFa_cursors c;
|
||||||
|
|
||||||
@ -694,36 +694,6 @@ void TTrFa_mask::load_sheet()
|
|||||||
sheet.show();
|
sheet.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
TString TTrFa_mask::findDetraib(TString tipodet) const
|
|
||||||
{
|
|
||||||
real perc = cache().get("%DET", tipodet, "R0");
|
|
||||||
return perc.stringa(6,2);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char * TTrFa_mask::natura(const TString& codiva) const
|
|
||||||
{
|
|
||||||
const TRectype& ai = cache().get("%IVA", codiva);
|
|
||||||
TString & natura = get_tmp_string(4);
|
|
||||||
|
|
||||||
natura = ai.get("S12");
|
|
||||||
return natura;
|
|
||||||
}
|
|
||||||
|
|
||||||
real TTrFa_mask::get_IVA(const TString& codiva) const
|
|
||||||
{
|
|
||||||
const TRectype& ai = cache().get("%IVA", codiva);
|
|
||||||
return ai.get_real("R0");
|
|
||||||
}
|
|
||||||
|
|
||||||
TString TTrFa_mask::revCharge(TString numreg) const
|
|
||||||
{
|
|
||||||
// Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi
|
|
||||||
TString key = numreg;
|
|
||||||
TCausale caus(cache().get(LF_MOV, key, "CODCAUS"));
|
|
||||||
if(caus.reverse_charge())
|
|
||||||
bool tolla = true;
|
|
||||||
return caus.reverse_charge() ? "X" : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TTrFa_mask::checkInvio(const TString& invio)
|
bool TTrFa_mask::checkInvio(const TString& invio)
|
||||||
{
|
{
|
||||||
@ -744,11 +714,6 @@ bool TTrFa_mask::checkInvio(const TString& invio)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
TString TTrFa_mask::getRFSO(TString codrfso) const
|
|
||||||
{
|
|
||||||
TString key; key << codrfso[0] << "|" << codrfso.mid(1);
|
|
||||||
return cache().get(LF_ANAG, key, "RAGSOC");
|
|
||||||
}
|
|
||||||
|
|
||||||
TTrFa_mask::TTrFa_mask(TString msk)
|
TTrFa_mask::TTrFa_mask(TString msk)
|
||||||
: TAutomask(msk), _filter_changed(true)
|
: TAutomask(msk), _filter_changed(true)
|
||||||
|
225
src/tf/tf0400.cpp
Normal file
225
src/tf/tf0400.cpp
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
#include "tf0400a.h"
|
||||||
|
#include "tfutility.h"
|
||||||
|
|
||||||
|
#include <applicat.h>
|
||||||
|
#include <automask.h>
|
||||||
|
#include <config.h>
|
||||||
|
#include <recset.h>
|
||||||
|
#include <recarray.h> // cache()
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************************************
|
||||||
|
* TSpeCheck_msk
|
||||||
|
****************************************************************************************************/
|
||||||
|
|
||||||
|
class TSpeCheck_msk : public TAutomask
|
||||||
|
{
|
||||||
|
void fillNoFilter();
|
||||||
|
void fillDiff();
|
||||||
|
void fillCust();
|
||||||
|
void getFilFlag(TString& query);
|
||||||
|
void enableEdit(bool en);
|
||||||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
|
public:
|
||||||
|
TSpeCheck_msk() : TAutomask("tf0400a"){}
|
||||||
|
};
|
||||||
|
|
||||||
|
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;
|
||||||
|
case F_TIPOCONTROLLO:
|
||||||
|
{
|
||||||
|
switch(o.mask().get_long(F_TIPOCONTROLLO))
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
fillNoFilter();
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
fillDiff();
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
fillCust();
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
void TSpeCheck_msk::fillDiff()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void TSpeCheck_msk::fillCust()
|
||||||
|
{
|
||||||
|
TString key; key << prefix().firm().get("TIPOA") << "|" << prefix().firm().get("CODANAGR");
|
||||||
|
static const TString pivaDitta = cache().get(LF_ANAG, key, "PAIV");
|
||||||
|
static const TString cofiDitta = cache().get(LF_ANAG, key, "COFI");
|
||||||
|
|
||||||
|
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);
|
||||||
|
// Nascondo lo sheet
|
||||||
|
s.hide();
|
||||||
|
|
||||||
|
if(!s.empty())
|
||||||
|
s.destroy();
|
||||||
|
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));
|
||||||
|
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
|
||||||
|
row.add(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" || pivaDitta == clifo.get("PAIV"))
|
||||||
|
{
|
||||||
|
row.add("X", s.cid2index(A_AUTOFATT));
|
||||||
|
row.add(pivaDitta, s.cid2index(A_PAIV));
|
||||||
|
row.add(cofiDitta, 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_string() == "X", s.cid2index(A_SPEDITA));
|
||||||
|
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
|
||||||
|
enable(DLG_SAVEREC,en);
|
||||||
|
enable(DLG_CANCEL, en);
|
||||||
|
|
||||||
|
TSheet_field& s = sfield(F_RIGHE);
|
||||||
|
|
||||||
|
// Abilito i campi
|
||||||
|
enable(A_ELIMINA,en);
|
||||||
|
enable(A_DATAREG,en);
|
||||||
|
enable(A_TIPODOC,en);
|
||||||
|
enable(A_NUMDOC,en);
|
||||||
|
enable(A_DATADOC,en);
|
||||||
|
enable(A_ALIQUOTA,en);
|
||||||
|
enable(A_IMPONIBILE,en);
|
||||||
|
enable(A_IMPOSTA,en);
|
||||||
|
enable(A_NATURA,en);
|
||||||
|
enable(A_TIPOCF,en);
|
||||||
|
enable(A_CODCF,en);
|
||||||
|
enable(A_OCFPI,en);
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************************************************
|
||||||
|
* 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;
|
||||||
|
app.run(argc, argv, TR("Controlli Spesometro"));
|
||||||
|
return 0;
|
||||||
|
}
|
32
src/tf/tf0400a.h
Normal file
32
src/tf/tf0400a.h
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
#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_RIGHE 201 // Sheet righe tf
|
||||||
|
|
||||||
|
#define A_ELIMINA 101
|
||||||
|
#define A_DATAREG 102
|
||||||
|
#define A_TIPODOC 103
|
||||||
|
#define A_NUMDOC 104
|
||||||
|
#define A_DATADOC 105
|
||||||
|
#define A_ALIQUOTA 106
|
||||||
|
#define A_IMPONIBILE 107
|
||||||
|
#define A_IMPOSTA 108
|
||||||
|
#define A_NATURA 109
|
||||||
|
#define A_DETRAIB 110
|
||||||
|
#define A_TIPOCF 111
|
||||||
|
#define A_CODCF 112
|
||||||
|
#define A_OCFPI 113
|
||||||
|
#define A_RAGSOC 114
|
||||||
|
#define A_RFSO 115
|
||||||
|
#define A_RAGSOCRFSO 116
|
||||||
|
#define A_PAIV 117
|
||||||
|
#define A_COFI 118
|
||||||
|
#define A_REVERSE 119
|
||||||
|
#define A_AUTOFATT 120
|
||||||
|
#define A_SPEDITA 121
|
||||||
|
#define A_NUMERO 122
|
289
src/tf/tf0400a.uml
Normal file
289
src/tf/tf0400a.uml
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
#include "tf0400a.h"
|
||||||
|
|
||||||
|
TOOLBAR "topbar" 0 0 0 2
|
||||||
|
|
||||||
|
BUTTON DLG_RECALC 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Aggiorna"
|
||||||
|
PICTURE TOOL_CONVERT
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_SAVEREC 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Salva"
|
||||||
|
PICTURE TOOL_SAVEREC
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 2 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Elimina"
|
||||||
|
PICTURE TOOL_DELREC
|
||||||
|
END
|
||||||
|
|
||||||
|
#include <helpbar.h>
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Controlli Spesometro" 0 2 0 0
|
||||||
|
|
||||||
|
LIST F_TIPOCONTROLLO 35 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "Controllo da effettuare"
|
||||||
|
ITEM "0|Movimenti esclusi"
|
||||||
|
ITEM "1|Differenze Prima Nota/Spesometro"
|
||||||
|
ITEM "2|Visualizza tutti i movimenti Spesometro"
|
||||||
|
FLAGS ""
|
||||||
|
END
|
||||||
|
|
||||||
|
LIST F_FLAG 35
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Stato movimento "
|
||||||
|
ITEM "0|Tutti"
|
||||||
|
ITEM "1|Da inviare"
|
||||||
|
ITEM "2|Inviati"
|
||||||
|
ITEM "3|Disabilitati"
|
||||||
|
FLAGS ""
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAINI
|
||||||
|
BEGIN
|
||||||
|
PROMPT 65 0 "Data iniziale:"
|
||||||
|
VALIDATE DATE_CMP_FUNC <= F_DATAFIN
|
||||||
|
WARNING "La data iniziale non può essere maggiore della data finale"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE F_DATAFIN
|
||||||
|
BEGIN
|
||||||
|
PROMPT 65 1 "Data Finale: "
|
||||||
|
VALIDATE DATE_CMP_FUNC >= F_DATAINI
|
||||||
|
WARNING "La data finale non può essere minore della data iniziale"
|
||||||
|
END
|
||||||
|
|
||||||
|
RADIOBUTTON F_TIPOCF 15
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Tipo C/F"
|
||||||
|
ITEM "C|Cliente"
|
||||||
|
ITEM "F|Fornitore"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 18 3 "Codice:"
|
||||||
|
USE LF_CLIFO
|
||||||
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
|
INPUT CODCF F_CODCF
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Occasionale@C" OCCAS
|
||||||
|
DISPLAY "Codice Fiscale@16" COFI
|
||||||
|
DISPLAY "Partita IVA@15" PAIV
|
||||||
|
OUTPUT F_CODCF CODCF
|
||||||
|
OUTPUT F_RAGSOC RAGSOC
|
||||||
|
CHEKTYPE NORMAL
|
||||||
|
GROUP 1
|
||||||
|
FLAGS ""
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_RAGSOC 50 49
|
||||||
|
BEGIN
|
||||||
|
PROMPT 18 5 "R.Soc: "
|
||||||
|
USE LF_CLIFO KEY 2
|
||||||
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
|
INPUT RAGSOC F_RAGSOC
|
||||||
|
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice" CODCF
|
||||||
|
DISPLAY "Codice Fiscale@16" COFI
|
||||||
|
DISPLAY "Partita IVA@15" PAIV
|
||||||
|
COPY OUTPUT F_CODCF
|
||||||
|
ADD RUN CG0 -1
|
||||||
|
GROUP 1
|
||||||
|
FLAGS ""
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_RIGHE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 0 8 "Righe movimenti"
|
||||||
|
ITEM "Elimina@1F"
|
||||||
|
ITEM "Data\n Reg.@8F"
|
||||||
|
ITEM "Tipo\nDocum.@2F"
|
||||||
|
ITEM "Numero\nDocum.@5F"
|
||||||
|
ITEM "Data\nDocum.@10"
|
||||||
|
ITEM "Aliquota@4"
|
||||||
|
ITEM "Imponibile@10"
|
||||||
|
ITEM "Imposta@10"
|
||||||
|
ITEM "Natura\nIVA@4"
|
||||||
|
ITEM "% Detr.@6"
|
||||||
|
ITEM "C/F@2"
|
||||||
|
ITEM "Codice@6"
|
||||||
|
ITEM "Occas.@16"
|
||||||
|
ITEM "Ragione Sociale@35"
|
||||||
|
ITEM "RF/SO@16"
|
||||||
|
ITEM "Rag. Soc. RF/SO@35"
|
||||||
|
ITEM "Partita IVA@11"
|
||||||
|
ITEM "Codice Fiscale@15"
|
||||||
|
ITEM "Rev.\nCharge@4"
|
||||||
|
ITEM "Auto\nfatt.@3"
|
||||||
|
ITEM "Spedita@5"
|
||||||
|
ITEM "N.\nRegistraz.@10"
|
||||||
|
DEFAULT "*" // Impedisce il salvataggio su profilo .ini
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "Riga" -1 -1 69 14
|
||||||
|
BOOLEAN A_ELIMINA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 10 "Elimina"
|
||||||
|
FIELD SPEDITA
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN A_SPEDITA
|
||||||
|
BEGIN
|
||||||
|
PROMPT 52 10 "Gia' spedita"
|
||||||
|
FIELD SPEDITA
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER A_NUMERO 10
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 0 "N.Movimento"
|
||||||
|
FLAGS "D"
|
||||||
|
FIELD PROGR
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE A_DATAREG
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 0 "Data reg."
|
||||||
|
FIELD DATAREG
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_TIPOCF 1
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Tipo C/F "
|
||||||
|
FIELD TIPOCF
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER A_CODCF 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 26 1 "Cod. C/F"
|
||||||
|
FIELD CODCF
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_OCFPI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 44 1 "Occas."
|
||||||
|
FIELD OCFPI
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_RAGSOC 50 47
|
||||||
|
BEGIN
|
||||||
|
FIELD RAGSOC
|
||||||
|
PROMPT 1 2 "Ragione Sociale"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_RFSO 6
|
||||||
|
BEGIN
|
||||||
|
FIELD RFSO
|
||||||
|
PROMPT 1 4 "Codice RF/SO: "
|
||||||
|
HELP "Codice Rappresentante Fiscale o Stabile Organizzazione"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_RAGSOCRFSO 50 47
|
||||||
|
BEGIN
|
||||||
|
FIELD RAGSOCRFSO
|
||||||
|
PROMPT 1 5 "Rag. Soc. RF/SO"
|
||||||
|
HELP "Ragione Sociale RF/SO"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_TIPODOC 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 23 6 "Tipo doc. "
|
||||||
|
FIELD TIPODOC
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_NUMDOC 7
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 6 "Num. doc. "
|
||||||
|
FIELD NUMDOC
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
DATE A_DATADOC
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 6 "Data doc."
|
||||||
|
FIELD DATADOC
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_NATURA 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 7 "Natura IVA"
|
||||||
|
FIELD S12
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_ALIQUOTA 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 7 "Aliquota "
|
||||||
|
HELP "Codice aliquota"
|
||||||
|
FIELD CODTAB
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_DETRAIB 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 8 "% Detraibilita'"
|
||||||
|
HELP "Percentuale di detraibilita'"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER A_IMPONIBILE 12 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 8 "Imponibile"
|
||||||
|
FIELD IMPORTO
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER A_IMPOSTA 12 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 42 9 "Imposta "
|
||||||
|
FIELD IMPOSTA
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN A_REVERSE
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 9 "Reverse charge"
|
||||||
|
FIELD REVERSE
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN A_AUTOFATT
|
||||||
|
BEGIN
|
||||||
|
PROMPT 25 9 "Autofattura"
|
||||||
|
FIELD AUTOFATT
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_PAIV 12
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "Partita IVA "
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING A_COFI 16
|
||||||
|
BEGIN
|
||||||
|
PROMPT 33 3 "Codice Fiscale"
|
||||||
|
FLAGS "D"
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDMASK
|
@ -4,5 +4,6 @@ Picture = <cg01>
|
|||||||
Module = tf
|
Module = tf
|
||||||
Flags = ""
|
Flags = ""
|
||||||
Item_01 = "Trasferimento Fatture", "tf0 -0", ""
|
Item_01 = "Trasferimento Fatture", "tf0 -0", ""
|
||||||
Item_02 = "Liquidazione IVA Periodica", "tf0 -1", ""
|
Item_02 = "Controllo Spesometro", "tf0 -3", ""
|
||||||
Item_03 = "Invio Liquidazione IVA Periodica", "tf0 -4", ""
|
Item_03 = "Liquidazione IVA Periodica", "tf0 -1", ""
|
||||||
|
Item_04 = "Invio Liquidazione IVA Periodica", "tf0 -4", ""
|
||||||
|
78
src/tf/tfutility.cpp
Normal file
78
src/tf/tfutility.cpp
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
#include <recarray.h> // cache()
|
||||||
|
|
||||||
|
#include "../ve/velib05.h"
|
||||||
|
#include "../cg/cglib03.h"
|
||||||
|
#include "../fe/felib.h"
|
||||||
|
#include "tfutility.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Ritorna il record da trasfatt
|
||||||
|
TRectype getTrasFatt(TString reg, TString codiva)
|
||||||
|
{
|
||||||
|
TString key = reg; key << "|" << codiva;
|
||||||
|
return cache().get(LF_TRASFATT, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ritorna il cliente
|
||||||
|
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi)
|
||||||
|
{
|
||||||
|
TString key = tipocf; key << "|" << codcf;
|
||||||
|
const TRectype& cli = cache().get(LF_CLIFO, key);
|
||||||
|
if(cli.get_bool("OCCAS"))
|
||||||
|
{
|
||||||
|
TRectype cli(LF_CLIFO);
|
||||||
|
TRectype occas = cache().get(LF_OCCAS, ocfpi);
|
||||||
|
cli.put("RAGSOC" , occas.get("RAGSOC"));
|
||||||
|
cli.put("CODRFSO" , "");
|
||||||
|
cli.put("PAIV" , occas.get("PAIV"));
|
||||||
|
cli.put("COFI" , occas.get("COFI"));
|
||||||
|
return cli;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return cli;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Controlla se l'azienda ha un RFSO
|
||||||
|
bool haveRFSO(TString& codrfso)
|
||||||
|
{
|
||||||
|
codrfso = cache().get(LF_NDITTE, prefix().firm().codice(), "CODRFSO");
|
||||||
|
if(codrfso == "") return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * natura(const TString& codiva)
|
||||||
|
{
|
||||||
|
const TRectype& ai = cache().get("%IVA", codiva);
|
||||||
|
TString & natura = get_tmp_string(4);
|
||||||
|
|
||||||
|
natura = ai.get("S12");
|
||||||
|
return natura;
|
||||||
|
}
|
||||||
|
|
||||||
|
TString findDetraib(TString tipodet)
|
||||||
|
{
|
||||||
|
real perc = cache().get("%DET", tipodet, "R0");
|
||||||
|
return perc.stringa(6,2);
|
||||||
|
}
|
||||||
|
|
||||||
|
real get_IVA(const TString& codiva)
|
||||||
|
{
|
||||||
|
const TRectype& ai = cache().get("%IVA", codiva);
|
||||||
|
return ai.get_real("R0");
|
||||||
|
}
|
||||||
|
|
||||||
|
TString revCharge(TString numreg)
|
||||||
|
{
|
||||||
|
// Controllo se la causale ha il reverse charge, se il cliente non l'ha impostata giusta sono ARAZZI suoi
|
||||||
|
TString key = numreg;
|
||||||
|
TCausale caus(cache().get(LF_MOV, key, "CODCAUS"));
|
||||||
|
if(caus.reverse_charge())
|
||||||
|
bool tolla = true;
|
||||||
|
return caus.reverse_charge() ? "X" : "";
|
||||||
|
}
|
||||||
|
|
||||||
|
TString getRFSO(TString codrfso)
|
||||||
|
{
|
||||||
|
TString key; key << codrfso[0] << "|" << codrfso.mid(1);
|
||||||
|
return cache().get(LF_ANAG, key, "RAGSOC");
|
||||||
|
}
|
21
src/tf/tfutility.h
Normal file
21
src/tf/tfutility.h
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
#include <strings.h>
|
||||||
|
#include <recset.h>
|
||||||
|
|
||||||
|
// Funzioni comode per più programmi
|
||||||
|
|
||||||
|
// Ritorna il record custom
|
||||||
|
TRectype getTrasFatt(TString reg, TString codiva);
|
||||||
|
// Ritorna il cliente in un record di $clifo, con tipocf = "O" lo cerca in $occas
|
||||||
|
TRectype getCli(const TString& tipocf, const TString& codcf, const TString& ocfpi);
|
||||||
|
// Controlla se l'azienda ha un RFSO
|
||||||
|
bool haveRFSO(TString& codrfso);
|
||||||
|
// Ritorna la natura da un codice IVA
|
||||||
|
const char * natura(const TString& codiva);
|
||||||
|
// Ritorna l'IVA
|
||||||
|
real get_IVA(const TString& codiva);
|
||||||
|
// Ritorna la % di detraibilità
|
||||||
|
TString findDetraib(TString tipodet);
|
||||||
|
// Ritorna "X" se ha il reverse charge
|
||||||
|
TString revCharge(TString numreg);
|
||||||
|
// Ritorna la ragione sociale del RFSO
|
||||||
|
TString getRFSO(TString codrfso);
|
Loading…
x
Reference in New Issue
Block a user