Patch level : 12.0 384

Files correlati     : tf
Commento            : 
- Sistemata maschera tf0500
- Corretta esportazione e chiamata programma .jar tf0500
- Tolti campi non utilizzati, aggiunta profilo, sistemata maschera per tf0200
- Sistemati bug tf0200, (programma ancora non finito)

git-svn-id: svn://10.65.10.50/branches/R_10_00@23768 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-05-03 14:11:27 +00:00
parent 54367a0d01
commit 05deed15ae
6 changed files with 287 additions and 254 deletions

View File

@ -45,6 +45,7 @@ const TRectype getLIA(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);
}
// Ritorna il record valido richiesto di tabcom.VER
const TRectype getVER(int anno, int mese)
{
@ -77,7 +78,7 @@ const TRectype getVER(int anno, int mese)
return rowRet;
}
// Scopiazzata brutalmente da cg4304.cpp
// Scopiazzata brutalmente da cg4304.cpp, aggiunto controllo indetraibilità per le imposte, non devono essere prese in considerazione se indetraibili
int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real& imposta_diff, real& imponibile_xcas, real& imposta_xcas)
{
CHECKD(tipoiva == 1 || tipoiva == 2, "Bad tipo iva:", tipoiva);
@ -102,15 +103,23 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real&
const int tipodiff = rec.get_int("TIPODIFF");
switch (tipodiff)
{
case 1: imponibile_diff += imp; imposta_diff += iva; break;
case 2: imponibile_xcas += imp; imposta_xcas += iva; break;
case 1:
imponibile_diff += imp;
if(!rec.get_bool("INDETR"))
imposta_diff += iva;
break;
case 2:
imponibile_xcas += imp;
if(!rec.get_bool("INDETR"))
imposta_xcas += iva;
break;
default: break;
}
flag |= tipodiff;
}
}
if (tipoiva == 2)
if (tipoiva == 2 && !rec.get_bool("INDETR"))
{
real perc_prorata;
@ -140,6 +149,12 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real&
return flag;
}
int getTipoReg(int anno, TString codReg)
{
TString key; key << anno << codReg;
return stoi(cache().get("REG", key, "I0"));
}
/* Da errori in allocazione TArray
const TISAM_recordset getCurIvaXCassa(TDate data_da, TDate data_a, TString codreg_att)
{
@ -192,14 +207,32 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
disable(F_MESE);
enable(F_TRIMESTRE);
}
// Abilito i campi a schiena
for(int i = F_SUBFORNITURE; i <= F_VEREFF; i++)
}
else if(e == fe_init)
{
// Per trovare un valore tento per 5 anni di vedere se c'è una liquidazione aperta, così da valorizzare tutta la roba
int year = TDate(TODAY).year();
for(int i = year; i >= year - 5; i--)
{
enable(i);
if(i >= CAMPI_CON_BOOLEAN)
TString cod = get(F_CODDITTA);
cod << i;
if(cache().get("%LIA", cod).empty()) continue;
// Trovato
set(F_ANNO, i);
if(cache().get("%LIA", cod, "S7") == "M")
{
//enable(i + 50); Anche disabilitati funzionano
mensile = true;
enable(F_MESE);
disable(F_TRIMESTRE);
}
else
{
mensile = false;
disable(F_MESE);
enable(F_TRIMESTRE);
}
break;
}
}
break;
@ -226,12 +259,12 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
break;
case DLG_EMAIL:
// Richiamo il programma di invio
// TExternal_application app;
// TExternal_application app;
break;
}
if(o.dlg() >= CAMPI_CON_BOOLEAN && e == fe_modify) // Se l'utente modifica manualmente uno dei campi calcolati da Campo flaggo il DB
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
{
set(o.dlg() + 50, "X");
}
@ -254,15 +287,18 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
if((ivaes - ivadet) >= ZERO)
{
set(F_IVADOV, ivaes - ivadet);
set(B_IVADOV, "X");
set(F_IVADOVC, ZERO);
set(B_IVADOVC, "");
}
else
{
set(F_IVADOV, ZERO);
set(B_IVADOV, "");
set(F_IVADOVC, (ivaes - ivadet) * -UNO);
set(B_IVADOVC, "X");
}
}
// IVA da versare VS a credito
case F_IVADOV :
case F_DEBPREC :
@ -280,14 +316,19 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
if(debito - credito >= ZERO)
{
set(F_IVAVER, debito - credito);
set(B_IVAVER, "X");
set(F_IVAVERC, ZERO);
set(B_IVAVERC, "");
}
else
{
set(F_IVAVER, ZERO);
set(B_IVAVER, "");
set(F_IVAVERC, credito - debito);
set(B_IVAVERC, "X");
}
}
break;
}
}
return true;
@ -300,8 +341,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
* 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) * 3;
int end = mensile ? start : start + 3;
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
@ -332,8 +373,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
real ivaverc = ZERO;
// Costanti
const TString codreg_att = "VEN";
const TString codreg_pas = "ACQ";
static const int reg_att = 1;
static const int reg_pas = 2;
for(; start <= end; start++)
{
@ -351,6 +392,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
// Controllo che la liquidazione è stata effettuata
if(rowLim.empty())
{
message_box("Errore LIM");
error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente");
return;
}
@ -366,97 +408,48 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
TRectype to(rprm.curr()); to.put("COD" , "PRM");to.put("CODTAB", anno);
TCursor curPrm(&rprm, "", 1, &from, &to);
for(curPrm = 0; curPrm.pos() < curPrm.items(); ++curPrm)
{
TRectype rowPrm = curPrm.curr();
// Controllo il mese
TString codtab = rowPrm.get("CODTAB");
int app = stoi(rowPrm.get("CODTAB").sub(13,15));
int app = stoi(rowPrm.get("CODTAB").sub(13,15)); // Da togliere
if(stoi(rowPrm.get("CODTAB").sub(13,15)) != start) continue;
// Verifico su che registro mi trovo
if(rowPrm.get("CODTAB").sub(10,13) == codreg_att)
int tiporeg = getTipoReg(anno, rowPrm.get("CODTAB").sub(10,13));
if(tiporeg == reg_att)
{
totopatt = totopatt + rowPrm.get_real("R0");
}
else if(rowPrm.get("CODTAB").sub(10,13) == codreg_pas)
else if(tiporeg == reg_pas)
{
totoppas = totoppas + rowPrm.get_real("R0");
}
}
real appReal = ZERO;
// IVA esigibile
TToken_string tokenPrec = rowLim.get("S0");
tokenPrec.get(0, appReal);
ivaes = ivaes + appReal;
// IVA detraibile
appReal = ZERO; // Nel dubbio azzero
tokenPrec.get(1, appReal);
ivadet = ivadet + appReal;
// Se ha attiva l'IVA x cassa
if(gestione_IVAxCassa(data_da))
{
static TRelation rreg(LF_TAB);
TRectype fromReg(rprm.curr()); fromReg.put("COD", "REG");fromReg.put("CODTAB", anno);
TRectype toReg(rprm.curr()); toReg.put("COD" , "REG"); toReg.put("CODTAB", anno);
// Questo codice è stato preso da print_IVAxCassa in cg4400.cpp
TString query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(MOV.REG=#REG)&&(STR((MESELIQ<13)&&(TIPOMOV>2)&&(MOV.TOTDOC!=0)&&(IMPOSTA!=0)&&NUM(INDETR!='X')))";
query << "\nBY DATAREGP DATAREG NUMPRO";
query << "\nJOIN MOV INTO NUMREG==NUMREG";
query << "\nJOIN CLIFO TO MOV INTO TIPOCF==TIPO CODCF==CODCF";
TCursor curReg(&rreg, "", 1, &fromReg, &toReg);
for(curReg = 0; curReg.pos() < curReg.items(); ++curReg)
{
TRectype rowReg = curReg.curr();
// Siamo su un registro non IVA
int tipo_registro = rowReg.get_int("I0");
if(tipo_registro > 2) continue;
TISAM_recordset id(query);
id.set_var("#DAL", data_da);
id.set_var("#AL", data_a);
id.set_var("#REG", rowReg.get("CODTAB").sub(4));
const TRectype& rec = id.cursor()->curr();
for (bool ok = id.move_first(); ok; ok = id.move_next())
{
if(tipo_registro == 1) // Vendite
{
totopattxc = totopattxc + rec.get_real("IMPOSTA");
}
else // Acquisti
{
totoppasxc = totoppasxc + rec.get_real("IMPOSTA");
}
}
}
// IVA esigibile
TToken_string tokenPrec = rowLim.get("S0");
tokenPrec.get(0, ivaes);
real imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas;
calc_inc_diff(anno, start, 1, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas);
imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
// 1 = Vendite
calc_inc_diff(anno, start, reg_att, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas);
totopattxc = totopattxc + imponibile_xcas;
ivaesxc = ivaesxc + imposta_xcas;
ivaesdiff = ivaesdiff + imposta_xcas;
// IVA detraibile
tokenPrec.get(1, ivadet);
calc_inc_diff(anno, start, 2, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas);
imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
// 2 = Acquisti
calc_inc_diff(anno, start, reg_pas, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas);
totoppasxc = totoppasxc + imponibile_xcas;
ivadetxc = ivadetxc + imposta_xcas;
ivadetdiff = ivadetdiff + imposta_xcas;
}
/** Resto *****************************************************************************************************/
ivaes = ivaes + rowLim.get_real("R13");
ivadet = ivadet + rowLim.get_real("R12");
@ -469,9 +462,13 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
debprec = debprec + rowLim.get_real("S2");
appReal = ZERO;
real appReal = ZERO;
// Credito periodo precedente
TToken_string tokenPrec = rowLim.get("S0");
real app1 = ZERO, app2 = ZERO;
tokenPrec.get(0, app1);
tokenPrec.get(1, app2);
tokenPrec.get(2, appReal);
creprec = creprec + appReal;
@ -487,6 +484,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
TRectype rowVer = getVER(anno, start);
if(rowVer.empty() || rowVer.get_real("R5") == ZERO)
{
message_box("Errore VER");
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
return;
}
@ -547,7 +545,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
set(F_VEREFF, vereff);
// Azzero i booleani
for(int i = B_TOTOPATT; i <= B_VEREFF; i++)
for(int i = B_TOTOPATT; i <= B_CRESPEC; i++)
{
set(i, "");
}

View File

@ -29,8 +29,8 @@
#define F_RETTIFICHE 129
#define F_VARIMP 130
#define F_RIMBORSI 131
#define F_IMPNOVER 132
#define F_CRESPEC 133
#define F_CRESPEC 132
#define F_IMPNOVER 133
#define F_VEREFF 134
@ -59,6 +59,4 @@
#define B_RETTIFICHE 179
#define B_VARIMP 180
#define B_RIMBORSI 181
#define B_IMPNOVER 182
#define B_CRESPEC 183
#define B_VEREFF 184
#define B_CRESPEC 182

View File

@ -35,7 +35,6 @@ BEGIN
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
KEY 1
END
STRING F_RAGSOC 50
@ -72,7 +71,7 @@ END
NUMBER F_MESE 2
BEGIN
PROMPT 20 2 "Mese "
PROMPT 24 2 "Mese "
SHEET " |Mese@30"
INPUT F_MESE
OUTPUT F_MESE
@ -94,11 +93,12 @@ BEGIN
FLAGS ""
KEY 1
FIELD MESE
CHECKTYPE REQUIRED
END
NUMBER F_TRIMESTRE 2
BEGIN
PROMPT 40 2 "Trimestre "
PROMPT 50 2 "Trimestre "
SHEET " |Trimestre@30"
INPUT F_TRIMESTRE
OUTPUT F_TRIMESTRE
@ -108,30 +108,30 @@ BEGIN
ITEM "3|Terzo"
ITEM "4|Quarto"
HELP "Trimestre dichiarazione, lasciare vuoto per inserirne uno nuovo"
KEY 1
FLAGS ""
FIELD TRIMESTRE
CHECKTYPE REQUIRED
END
BOOLEAN F_SUBFORNITURE
BEGIN
PROMPT 1 3 "Subforniture"
FIELD SUBFOR
FLAGS "D"
FLAGS ""
END
NUMBER F_EVECC 1
BEGIN
PROMPT 24 3 "Eventi eccezionali "
FIELD EVECC
FLAGS "D"
FLAGS ""
ENDPAGE
NUMBER F_TOTOPATT 16 2
BEGIN
PROMPT 1 4 "Totale op. attive "
FIELD TOTOPATT
FLAGS "D"
FLAGS ""
END
BOOLEAN B_TOTOPATT
@ -145,7 +145,7 @@ NUMBER F_TOTOPATTXC 16 2
BEGIN
PROMPT 1 5 "Totale op. attive x c."
FIELD TOTOPATTXC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_TOTOPATTXC
@ -157,353 +157,341 @@ END
NUMBER F_TOTOPPAS 16 2
BEGIN
PROMPT 1 6 "Totale op. passive "
PROMPT 50 4 "Totale op. passive "
FIELD TOTOPPAS
FLAGS "D"
FLAGS ""
END
BOOLEAN B_TOTOPPAS
BEGIN
PROMPT 45 6 ""
PROMPT 94 4 ""
FIELD BTOTOPPAS
FLAGS "D"
END
NUMBER F_TOTOPPASXC 16 2
BEGIN
PROMPT 1 7 "Totale op. passive x c."
PROMPT 50 5 "Totale op. passive x c."
FIELD TOTOPPASXC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_TOTOPPASXC
BEGIN
PROMPT 45 7 ""
PROMPT 94 5 ""
FIELD BTOTOPPASX
FLAGS "D"
END
NUMBER F_IVAES 16 2
BEGIN
PROMPT 1 8 "IVA esigibile "
PROMPT 1 6 "IVA esigibile "
FIELD IVAES
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVAES
BEGIN
PROMPT 45 8 ""
PROMPT 45 6 ""
FIELD BIVAES
FLAGS "D"
END
NUMBER F_IVAESXC 16 2
BEGIN
PROMPT 1 9 "IVA esigibile x c. "
PROMPT 1 7 "IVA esigibile x c. "
FIELD IVAESXC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVAESXC
BEGIN
PROMPT 45 9 ""
PROMPT 45 7 ""
FIELD BIVAESXC
FLAGS "D"
END
NUMBER F_IVAESDIFF 16 2
BEGIN
PROMPT 1 10 "IVA esigibile diff "
PROMPT 1 8 "IVA esigibile diff "
FIELD IVAESDIFF
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVAESDIFF
BEGIN
PROMPT 45 10 ""
PROMPT 45 8 ""
FIELD BIVAESDIFF
FLAGS "D"
END
NUMBER F_IVADET 16 2
BEGIN
PROMPT 1 11 "IVA detratta "
PROMPT 50 6 "IVA detratta "
FIELD IVADET
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVADET
BEGIN
PROMPT 45 11 ""
PROMPT 94 6 ""
FIELD BIVADET
FLAGS "D"
END
NUMBER F_IVADETXC 16 2
BEGIN
PROMPT 1 12 "IVA detratta x c. "
PROMPT 50 7 "IVA detratta x c. "
FIELD IVADETXC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVADETXC
BEGIN
PROMPT 45 12 ""
PROMPT 94 7 ""
FIELD BIVADETXC
FLAGS "D"
END
NUMBER F_IVADETDIFF 16 2
BEGIN
PROMPT 1 13 "IVA detratta diff "
PROMPT 50 8 "IVA detratta diff "
FIELD IVADETDIFF
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVADETDIFF
BEGIN
PROMPT 45 13 ""
PROMPT 94 8 ""
FIELD BIVADETDIF
FLAGS "D"
END
NUMBER F_IVADOV 16 2
BEGIN
PROMPT 1 14 "IVA dovuta "
PROMPT 1 10 "IVA dovuta "
FIELD IVADOV
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVADOV
BEGIN
PROMPT 45 14 ""
PROMPT 45 10 ""
FIELD BIVADOV
FLAGS "D"
END
NUMBER F_IVADOVC 16 2
BEGIN
PROMPT 50 14 "o a credito"
PROMPT 50 10 "o a credito "
FIELD IVADOVC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_IVADOVC
BEGIN
PROMPT 80 14 ""
PROMPT 94 10 ""
FIELD BIVADOVC
FLAGS "D"
END
NUMBER F_DEBPREC 16 2
BEGIN
PROMPT 1 15 "Debito precedente "
PROMPT 1 12 "Debito precedente "
FIELD DEBPREC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_DEBPREC
BEGIN
PROMPT 45 15 ""
PROMPT 45 12 ""
FIELD BDEBPREC
FLAGS "D"
END
NUMBER F_CREPREC 16 2
BEGIN
PROMPT 1 16 "Credito precedente "
PROMPT 50 12 "Credito precedente "
FIELD CREPREC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_CREPREC
BEGIN
PROMPT 45 16 ""
PROMPT 94 12 ""
FIELD BCREPREC
FLAGS "D"
END
NUMBER F_INTLIQTRI 16 2
BEGIN
PROMPT 1 13 "Interessi liq. trim. "
FIELD INTLIQTRI
FLAGS ""
END
BOOLEAN B_INTLIQTRI
BEGIN
PROMPT 45 13 ""
FIELD BINTLIQTRI
FLAGS "D"
END
NUMBER F_CREAPREC 16 2
BEGIN
PROMPT 1 17 "Credito anno precedente"
PROMPT 50 13 "Credito anno precedente"
FIELD CREAPREC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_CREAPREC
BEGIN
PROMPT 45 17 ""
PROMPT 94 13 ""
FIELD BCREAPREC
FLAGS "D"
END
NUMBER F_ACCDOV 16 2
BEGIN
PROMPT 1 14 "Acconto dovuto "
FIELD ACCDOV
FLAGS ""
END
BOOLEAN B_ACCDOV
BEGIN
PROMPT 45 14 ""
FIELD BACCDOV
FLAGS "D"
END
NUMBER F_VEAUE 16 2
BEGIN
PROMPT 1 18 "Versamenti auto UE "
PROMPT 50 14 "Versamenti auto UE "
FIELD VEAUE
FLAGS "D"
FLAGS ""
END
BOOLEAN B_VEAUE
BEGIN
PROMPT 45 18 ""
PROMPT 94 14 ""
FIELD BVEAUE
FLAGS "D"
END
NUMBER F_CREIMP 16 2
BEGIN
PROMPT 1 19 "Crediti di imposta "
PROMPT 50 15 "Crediti di imposta "
FIELD CREIMP
FLAGS "D"
FLAGS ""
END
BOOLEAN B_CREIMP
BEGIN
PROMPT 45 19 ""
PROMPT 94 15 ""
FIELD BCREIMP
FLAGS "D"
END
NUMBER F_INTLIQTRI 16 2
BEGIN
PROMPT 1 20 "Interessi liq. trim. "
FIELD INTLIQTRI
FLAGS "D"
END
BOOLEAN B_INTLIQTRI
BEGIN
PROMPT 45 20 ""
FIELD BINTLIQTRI
FLAGS "D"
END
NUMBER F_ACCDOV 16 2
BEGIN
PROMPT 1 21 "Acconto dovuto "
FIELD ACCDOV
FLAGS "D"
END
BOOLEAN B_ACCDOV
BEGIN
PROMPT 45 21 ""
FIELD BACCDOV
FLAGS "D"
END
NUMBER F_IVAVER 16 2
BEGIN
PROMPT 1 22 "IVA da versare "
FIELD IVAVER
FLAGS "D"
END
BOOLEAN B_IVAVER
BEGIN
PROMPT 45 22 ""
FIELD BIVAVER
FLAGS "D"
END
NUMBER F_IVAVERC 16 2
BEGIN
PROMPT 50 22 "o a credito"
FIELD IVAVERC
FLAGS "D"
END
BOOLEAN B_IVAVERC
BEGIN
PROMPT 80 22 ""
FIELD BIVAVERC
FLAGS "D"
END
NUMBER F_RETTIFICHE 16 2
BEGIN
PROMPT 1 23 "Rettifiche "
PROMPT 1 16 "Rettifiche "
FIELD RETTIFICHE
FLAGS "D"
FLAGS ""
END
BOOLEAN B_RETTIFICHE
BEGIN
PROMPT 45 23 ""
PROMPT 45 16 ""
FIELD BRETTIFICH
FLAGS "D"
END
NUMBER F_VARIMP 16 2
BEGIN
PROMPT 1 24 "Variazioni d'imposta "
PROMPT 50 16 "Variazioni d'imposta "
FIELD VARIMP
FLAGS "D"
FLAGS ""
END
BOOLEAN B_VARIMP
BEGIN
PROMPT 45 24 ""
PROMPT 94 16 ""
FIELD BVARIMP
FLAGS "D"
END
NUMBER F_RIMBORSI 16 2
BEGIN
PROMPT 1 25 "Rimborsi "
PROMPT 1 17 "Rimborsi "
FIELD RIMBORSI
FLAGS "D"
FLAGS ""
END
BOOLEAN B_RIMBORSI
BEGIN
PROMPT 45 25 ""
PROMPT 45 17 ""
FIELD BRIMBORSI
FLAGS "D"
END
NUMBER F_IMPNOVER 16 2
BEGIN
PROMPT 1 26 "Imposta non versata "
FIELD IMPNOVER
FLAGS "D"
END
BOOLEAN B_IMPNOVER
BEGIN
PROMPT 45 26 ""
FIELD BIMPNOVER
FLAGS "D"
END
NUMBER F_CRESPEC 16 2
BEGIN
PROMPT 1 27 "Crediti speciali "
PROMPT 50 17 "Crediti speciali "
FIELD CRESPEC
FLAGS "D"
FLAGS ""
END
BOOLEAN B_CRESPEC
BEGIN
PROMPT 45 27 ""
PROMPT 94 17 ""
FIELD BCRESPEC
FLAGS "D"
END
NUMBER F_VEREFF 16 2
NUMBER F_IVAVER 16 2
BEGIN
PROMPT 1 28 "Versamenti effettuati "
FIELD VEREFF
PROMPT 1 19 "IVA da versare "
FIELD IVAVER
FLAGS ""
END
BOOLEAN B_IVAVER
BEGIN
PROMPT 45 19 ""
FIELD BIVAVER
FLAGS "D"
END
BOOLEAN B_VEREFF
NUMBER F_IVAVERC 16 2
BEGIN
PROMPT 45 28 ""
FIELD BVEREFF
PROMPT 50 19 "o a credito "
FIELD IVAVERC
FLAGS ""
END
BOOLEAN B_IVAVERC
BEGIN
PROMPT 94 19 ""
FIELD BIVAVERC
FLAGS "D"
END
/* Campi non visualizzati ma che vengono salvati lo stesso! */
NUMBER F_IMPNOVER 1 1
BEGIN
PROMPT 50 19 "Imposta non versata"
FIELD IMPNOVER
FLAGS "H"
END
NUMBER F_VEREFF 1 1
BEGIN
PROMPT 50 19 "Versamenti effettuati"
FIELD VEREFF
FLAGS "H"
END
ENDMASK

View File

@ -10,7 +10,7 @@
#include <utility.h> // get_iva_sirio()
#define TIPO_FILE "DF"
#define TFBASE "tf"
#define TFBASE "ModuliSirio"
#define CODICE_FORNITURA "IVP17"
@ -56,6 +56,7 @@ class TIvaSend_msk : public TAutomask
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"){}
};
@ -123,31 +124,57 @@ bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
}
}
break;
case F_DAMESE:
if(e == fe_modify)
set(F_AMESE, get_int(F_DAMESE)+2);
break;
}
return true;
}
bool TIvaSend_msk::checkVariables()
{
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()))
{
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))))
{
error_box("Date immesse non corrette");
return false;
}
return true;
}
class TIvaSend_app : public TSkeleton_application
{
void generateNSend(TIvaSend_msk& msk) { generate(msk); send(); }
void generate(TIvaSend_msk& msk);
void generateNSend(TIvaSend_msk& msk) { generate(msk) && send(); }
bool generate(TIvaSend_msk& msk);
TToken_string getTestata(TIvaSend_msk& msk);
void send();
bool send();
public:
virtual void main_loop();
};
void TIvaSend_app::generate(TIvaSend_msk& msk)
bool TIvaSend_app::generate(TIvaSend_msk& msk)
{
if(!msk.checkVariables())
return false;
ofstream file;
TFilename path(msk.get(F_PATH));
TRectype rowLim = getLim(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE) * 3);
TRectype rowLiq = getLiq(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE) * 3);
TRectype rowLim = getLim(msk.get_int(F_ANNO), msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE) - 1) * 3) + 1));
// Decido di utilizzare I10 come numero progressivo di trasmissione
int prog = rowLim.get_int("I10"); prog++;
int prog = rowLim.get_int("I14"); prog++;
TString nomeFile; nomeFile << "IT" << getAnagDitta().get("PAIV") << TIPO_FILE << prog << ".csv";
@ -159,10 +186,12 @@ void TIvaSend_app::generate(TIvaSend_msk& msk)
TToken_string testata(getTestata(msk));
int start = msk.isMese() ? msk.get_int(F_DAMESE) : msk.get_int(F_DATRIMESTRE);
int end = msk.isMese() ? msk.get_int(F_AMESE) : msk.get_int(F_ATRIMESTRE);
int start = msk.isMese() ? msk.get_int(F_DAMESE) : (((msk.get_int(F_DATRIMESTRE) - 1) * 3) + 1);
int end = msk.isMese() ? msk.get_int(F_AMESE) : (((msk.get_int(F_ATRIMESTRE) - 1) * 3) + 1);
for(; start <= end; start++)
{
rowLim = getLim(msk.get_int(F_ANNO), start); // rowLim viene già usata sopra
TRectype rowLiq = getLiq(msk.get_int(F_ANNO), start);
TToken_string riga(testata);
if(msk.isMese())
@ -213,8 +242,9 @@ void TIvaSend_app::generate(TIvaSend_msk& msk)
if(rowLim.rewrite(TLocalisamfile(LF_TAB)) != NOERR)
{
error_box("Errore aggiornamento progressivo");
return false;
}
return true;
}
TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
@ -245,10 +275,10 @@ TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
return testata;
}
void TIvaSend_app::send()
bool TIvaSend_app::send()
{
TFilename tmp;
tmp = TFBASE"\\SiaggTFCAMPO.jar";
tmp = TFBASE"\\ModuliSirio.jar";
tmp.make_absolute_path();
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
@ -256,11 +286,15 @@ void TIvaSend_app::send()
xvt_fsys_set_dir(&new_dir);
const bool good = goto_url(tmp);
if (good)
xvt_sys_sleep(3000);
{
xvt_sys_sleep(3000);
}
else
{
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
}
xvt_fsys_set_dir(&old_dir);
return true;
}
void TIvaSend_app::main_loop()

View File

@ -1,6 +1,7 @@
#include "tf0500a.h"
TOOLBAR "topbar" 0 0 0 2
#include <elabar.h>
ENDPAGE
@ -25,7 +26,6 @@ BEGIN
OUTPUT F_CODDITTA CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
KEY 1
END
STRING F_RAGSOC 50
@ -33,7 +33,7 @@ BEGIN
PROMPT 20 2 ""
USE LF_NDITTE KEY 2
INPUT RAGSOC F_RAGSOC
DISPLAY "Ragione Sociale@60" RAGSOC
DISPLAY "Ragione Sociale@60" RAGSOC
DISPLAY "Codice" CODDITTA
COPY OUTPUT F_CODDITTA
CHECKTYPE REQUIRED
@ -51,7 +51,7 @@ BEGIN
OUTPUT F_ANNO ANNO
OUTPUT F_DAMESE MESE
OUTPUT F_DATRIMESTRE TRIMESTRE
CHECKTYPE REQUIRED
OUTPUT F_ATRIMESTRE TRIMESTRE
FLAGS ""
WARNING "Inserire un anno di liquidazione"
END
@ -60,6 +60,8 @@ NUMBER F_DAMESE 2
BEGIN
PROMPT 20 3 "Da mese "
SHEET " |Mese@30"
INPUT F_DAMESE
OUTPUT F_DAMESE
ITEM "|"
ITEM "1|Gennaio"
ITEM "2|Febbraio"
@ -82,6 +84,8 @@ NUMBER F_AMESE 2
BEGIN
PROMPT 40 3 "A mese "
SHEET " |Mese@30"
INPUT F_AMESE
OUTPUT F_AMESE
ITEM "|"
ITEM "1|Gennaio"
ITEM "2|Febbraio"
@ -104,6 +108,8 @@ NUMBER F_DATRIMESTRE 2
BEGIN
PROMPT 20 4 "Da trimestre "
SHEET " |Trimestre@30"
INPUT F_DATRIMESTRE
OUTPUT F_DATRIMESTRE
ITEM "|"
ITEM "1|Primo"
ITEM "2|Secondo"
@ -117,6 +123,8 @@ NUMBER F_ATRIMESTRE 2
BEGIN
PROMPT 40 4 "A trimestre "
SHEET " |Trimestre@30"
INPUT F_ATRIMESTRE
OUTPUT F_ATRIMESTRE
ITEM "|"
ITEM "1|Primo"
ITEM "2|Secondo"
@ -126,5 +134,12 @@ BEGIN
FLAGS "D"
END
STRING DLG_PROFILE 256
BEGIN
PROMPT 1 -1 "Profilo "
PSELECT
FLAGS "H"
END
ENDPAGE
ENDMASK

View File

@ -1,8 +1,8 @@
[TFMENU_001]
Caption = "Trasferimento Fatture"
Picture = <ve01>
Module = tf
Flags = "F"
//Item_01 = "Trasferimento Fatture", "tf0 -0", "F"
Item_02 = "Liquidazione IVA Periodica", "tf0 -1", "F"
Item_03 = "Invio Liquidazione IVA Periodica", "tf -4", "F"
Picture = <cg01>
Module = 50
Flags = ""
//Item_01 = "Trasferimento Fatture", "tf0 -0", ""
Item_02 = "Liquidazione IVA Periodica", "tf0 -1", ""
Item_03 = "Invio Liquidazione IVA Periodica", "tf0 -4", ""