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 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); return cache().get("%LIA", key);
} }
// Ritorna il record valido richiesto di tabcom.VER // Ritorna il record valido richiesto di tabcom.VER
const TRectype getVER(int anno, int mese) const TRectype getVER(int anno, int mese)
{ {
@ -77,7 +78,7 @@ const TRectype getVER(int anno, int mese)
return rowRet; 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) 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); 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"); const int tipodiff = rec.get_int("TIPODIFF");
switch (tipodiff) switch (tipodiff)
{ {
case 1: imponibile_diff += imp; imposta_diff += iva; break; case 1:
case 2: imponibile_xcas += imp; imposta_xcas += iva; break; 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; default: break;
} }
flag |= tipodiff; flag |= tipodiff;
} }
} }
if (tipoiva == 2) if (tipoiva == 2 && !rec.get_bool("INDETR"))
{ {
real perc_prorata; real perc_prorata;
@ -140,6 +149,12 @@ int calc_inc_diff(int anno, int mese, int tipoiva, real& imponibile_diff, real&
return flag; 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 /* Da errori in allocazione TArray
const TISAM_recordset getCurIvaXCassa(TDate data_da, TDate data_a, TString codreg_att) 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); disable(F_MESE);
enable(F_TRIMESTRE); 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); TString cod = get(F_CODDITTA);
if(i >= CAMPI_CON_BOOLEAN) 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; break;
@ -226,12 +259,12 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
break; break;
case DLG_EMAIL: case DLG_EMAIL:
// Richiamo il programma di invio // Richiamo il programma di invio
// TExternal_application app; // TExternal_application app;
break; 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"); 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) if((ivaes - ivadet) >= ZERO)
{ {
set(F_IVADOV, ivaes - ivadet); set(F_IVADOV, ivaes - ivadet);
set(B_IVADOV, "X");
set(F_IVADOVC, ZERO); set(F_IVADOVC, ZERO);
set(B_IVADOVC, "");
} }
else else
{ {
set(F_IVADOV, ZERO); set(F_IVADOV, ZERO);
set(B_IVADOV, "");
set(F_IVADOVC, (ivaes - ivadet) * -UNO); set(F_IVADOVC, (ivaes - ivadet) * -UNO);
set(B_IVADOVC, "X");
} }
} }
// IVA da versare VS a credito // IVA da versare VS a credito
case F_IVADOV : case F_IVADOV :
case F_DEBPREC : case F_DEBPREC :
@ -280,14 +316,19 @@ bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long
if(debito - credito >= ZERO) if(debito - credito >= ZERO)
{ {
set(F_IVAVER, debito - credito); set(F_IVAVER, debito - credito);
set(B_IVAVER, "X");
set(F_IVAVERC, ZERO); set(F_IVAVERC, ZERO);
set(B_IVAVERC, "");
} }
else else
{ {
set(F_IVAVER, ZERO); set(F_IVAVER, ZERO);
set(B_IVAVER, "");
set(F_IVAVERC, credito - debito); set(F_IVAVERC, credito - debito);
set(B_IVAVERC, "X");
} }
} }
break;
} }
} }
return true; return true;
@ -300,8 +341,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
* I dati da prelevare saranno in PRM, LIM e %LIA * 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 * 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 start = mensile ? get_int(F_MESE) : (((get_int(F_TRIMESTRE) - 1) * 3) + 1);
int end = mensile ? start : start + 3; int end = mensile ? start : start + 2;
int anno = get_int(F_ANNO); int anno = get_int(F_ANNO);
// Valori da calcolare // Valori da calcolare
@ -332,8 +373,8 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
real ivaverc = ZERO; real ivaverc = ZERO;
// Costanti // Costanti
const TString codreg_att = "VEN"; static const int reg_att = 1;
const TString codreg_pas = "ACQ"; static const int reg_pas = 2;
for(; start <= end; start++) for(; start <= end; start++)
{ {
@ -351,6 +392,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
// Controllo che la liquidazione è stata effettuata // Controllo che la liquidazione è stata effettuata
if(rowLim.empty()) if(rowLim.empty())
{ {
message_box("Errore LIM");
error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente"); error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente");
return; 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); TRectype to(rprm.curr()); to.put("COD" , "PRM");to.put("CODTAB", anno);
TCursor curPrm(&rprm, "", 1, &from, &to); TCursor curPrm(&rprm, "", 1, &from, &to);
for(curPrm = 0; curPrm.pos() < curPrm.items(); ++curPrm) for(curPrm = 0; curPrm.pos() < curPrm.items(); ++curPrm)
{ {
TRectype rowPrm = curPrm.curr(); TRectype rowPrm = curPrm.curr();
// Controllo il mese // Controllo il mese
TString codtab = rowPrm.get("CODTAB"); 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; if(stoi(rowPrm.get("CODTAB").sub(13,15)) != start) continue;
// Verifico su che registro mi trovo // 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"); 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"); 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 // Se ha attiva l'IVA x cassa
if(gestione_IVAxCassa(data_da)) 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 // IVA esigibile
TToken_string tokenPrec = rowLim.get("S0");
tokenPrec.get(0, ivaes);
real imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas; 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 // IVA detraibile
tokenPrec.get(1, ivadet); imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
calc_inc_diff(anno, start, 2, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas); // 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 *****************************************************************************************************/ /** Resto *****************************************************************************************************/
ivaes = ivaes + rowLim.get_real("R13"); ivaes = ivaes + rowLim.get_real("R13");
ivadet = ivadet + rowLim.get_real("R12"); ivadet = ivadet + rowLim.get_real("R12");
@ -469,9 +462,13 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
debprec = debprec + rowLim.get_real("S2"); debprec = debprec + rowLim.get_real("S2");
appReal = ZERO; real appReal = ZERO;
// Credito periodo precedente // 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); tokenPrec.get(2, appReal);
creprec = creprec + appReal; creprec = creprec + appReal;
@ -487,6 +484,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
TRectype rowVer = getVER(anno, start); TRectype rowVer = getVER(anno, start);
if(rowVer.empty() || rowVer.get_real("R5") == ZERO) 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\""); error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
return; return;
} }
@ -547,7 +545,7 @@ void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
set(F_VEREFF, vereff); set(F_VEREFF, vereff);
// Azzero i booleani // Azzero i booleani
for(int i = B_TOTOPATT; i <= B_VEREFF; i++) for(int i = B_TOTOPATT; i <= B_CRESPEC; i++)
{ {
set(i, ""); set(i, "");
} }

View File

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

View File

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

View File

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

View File

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

View File

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