Patch level : 12.0 384
Files correlati : tf Commento : - Aggiunta nuovo modulo TF, con programma Liquidazione IVA Periodica - Aggiunta tabelle f173 e f174, la prima per il trasferimento fatture (in lavorazione) e la seconda per questo nuovo programma git-svn-id: svn://10.65.10.50/branches/R_10_00@23760 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
555390f63c
commit
f5ad9b6e81
3
src/tf/f173.dir
Normal file
3
src/tf/f173.dir
Normal file
@ -0,0 +1,3 @@
|
||||
173
|
||||
0
|
||||
$trasfatt|0|0|69|0|Tabella trasferimento fatture|||
|
13
src/tf/f173.trr
Normal file
13
src/tf/f173.trr
Normal file
@ -0,0 +1,13 @@
|
||||
173
|
||||
9
|
||||
NUMREG|9|4|0|Codice esercizio
|
||||
TIPO|7|1|0|Tipo <C>liente o <F>ornitore
|
||||
CODCF|3|6|0|Codice
|
||||
TIPODOC|1|2|0|Tipo documento
|
||||
NUMDOC|1|7|0|Numero documento
|
||||
DATADOC|5|8|0|Data documento
|
||||
IMPONIBILE|4|18|3|Imponibile
|
||||
IMPOSTA|4|18|3|Imposta
|
||||
CODIVA|1|4|0|Codice IVA
|
||||
1
|
||||
NUMREG+CODIVA|
|
3
src/tf/f174.dir
Normal file
3
src/tf/f174.dir
Normal file
@ -0,0 +1,3 @@
|
||||
174
|
||||
0
|
||||
$ivaliq|1|1|523|0|Righe liquidazione mensile/trimestrale IVA|||
|
63
src/tf/f174.trr
Normal file
63
src/tf/f174.trr
Normal file
@ -0,0 +1,63 @@
|
||||
174
|
||||
59
|
||||
ANNO|2|4|0|Anno di imposta
|
||||
MESE|2|2|0|Periodo dichiarazione, mese
|
||||
TRIMESTRE|2|1|0|Periodo dichiarazione, trimestre
|
||||
SUBFOR|8|1|0|Subforniture
|
||||
EVECC|2|1|0|Eventi eccezionali
|
||||
TOTOPATT|4|18|3|Totale operazioni attive (al netto dell'IVA)
|
||||
TOTOPATTXC|4|18|3|Totale operazioni attive IVAxCassa
|
||||
TOTOPPAS|4|18|3|Totale operazioni passive (al netto dell'IVA)
|
||||
TOTOPPASXC|4|18|3|Totale operazioni passive IVAxCassa
|
||||
IVAES|4|18|3|IVA esigibile
|
||||
IVAESXC|4|18|3|IVA esigibile x cassa
|
||||
IVAESDIFF|4|18|3|IVA esigibile differita
|
||||
IVADET|4|18|3|IVA detratta
|
||||
IVADETXC|4|18|3|IVA detratta x cassa
|
||||
IVADETDIFF|4|18|3|IVA detratta differita
|
||||
IVADOV|4|18|3|IVA dovuta
|
||||
IVADOVC|4|18|3|IVA a credito VP6 col 2
|
||||
DEBPREC|4|18|3|Debito periodo precedente
|
||||
CREPREC|4|18|3|Credito periodo precedente
|
||||
CREAPREC|4|18|3|Credito anno precedente
|
||||
VEAUE|4|18|3|Versamenti auto UE
|
||||
CREIMP|4|18|3|Crediti di imposta
|
||||
INTLIQTRI|4|18|3|Interessi dovuti per liquidazioni trimestrali
|
||||
ACCDOV|4|18|3|Acconto dovuto
|
||||
IVAVER|4|18|3|IVA da versare
|
||||
IVAVERC|4|18|3|IVA a credito VP14 col 2
|
||||
RETTIFICHE|4|18|3|Rettifiche
|
||||
VARIMP|4|18|3|Variazioni di imposta
|
||||
RIMBORSI|4|18|3|Rimborsi
|
||||
IMPNOVER|4|18|3|Imposta non versata
|
||||
CRESPEC|4|18|3|Crediti speciali
|
||||
VEREFF|4|18|3|Versamenti effettuati
|
||||
BTOTOPATT|8|1|0|Booleano controllo modifica da utente
|
||||
BTOTOPATTX|8|1|0|Booleano controllo modifica da utente
|
||||
BTOTOPPAS|8|1|0|Booleano controllo modifica da utente
|
||||
BTOTOPPASX|8|1|0|Booleano controllo modifica da utente
|
||||
BIVAES|8|1|0|Booleano controllo modifica da utente
|
||||
BIVAESXC|8|1|0|Booleano controllo modifica da utente
|
||||
BIVAESDIFF|8|1|0|Booleano controllo modifica da utente
|
||||
BIVADET|8|1|0|Booleano controllo modifica da utente
|
||||
BIVADETXC|8|1|0|Booleano controllo modifica da utente
|
||||
BIVADETDIF|8|1|0|Booleano controllo modifica da utente
|
||||
BIVADOV|8|1|0|Booleano controllo modifica da utente
|
||||
BIVADOVC|8|1|0|Booleano controllo modifica da utente
|
||||
BDEBPREC|8|1|0|Booleano controllo modifica da utente
|
||||
BCREPREC|8|1|0|Booleano controllo modifica da utente
|
||||
BCREAPREC|8|1|0|Booleano controllo modifica da utente
|
||||
BVEAUE|8|1|0|Booleano controllo modifica da utente
|
||||
BCREIMP|8|1|0|Booleano controllo modifica da utente
|
||||
BINTLIQTRI|8|1|0|Booleano controllo modifica da utente
|
||||
BACCDOV|8|1|0|Booleano controllo modifica da utente
|
||||
BIVAVER|8|1|0|Booleano controllo modifica da utente
|
||||
BIVAVERC|8|1|0|Booleano controllo modifica da utente
|
||||
BRETTIFICH|8|1|0|Booleano controllo modifica da utente
|
||||
BVARIMP|8|1|0|Booleano controllo modifica da utente
|
||||
BRIMBORSI|8|1|0|Booleano controllo modifica da utente
|
||||
BIMPNOVER|8|1|0|Booleano controllo modifica da utente
|
||||
BCRESPEC|8|1|0|Booleano controllo modifica da utente
|
||||
BVEREFF|8|1|0|Booleano controllo modifica da utente
|
||||
1
|
||||
ANNO+MESE|
|
21
src/tf/tf0.cpp
Normal file
21
src/tf/tf0.cpp
Normal file
@ -0,0 +1,21 @@
|
||||
#include <xvt.h>
|
||||
#include "tf0.h"
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int rt = -1;
|
||||
const int r = (argc > 1) ? atoi( &argv[1][1] ) : 1;
|
||||
|
||||
switch (r)
|
||||
{
|
||||
|
||||
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; // Invio TF
|
||||
case 4: rt = tf0500(argc, argv); break; // Invio IVA
|
||||
//case 5: rt = tf0600(argc, argv); break; // Invio Spesometro
|
||||
default: rt = tf0100(argc, argv); break; // Trasferimento Fatture Elettroniche
|
||||
}
|
||||
return rt;
|
||||
}
|
||||
|
8
src/tf/tf0.h
Normal file
8
src/tf/tf0.h
Normal file
@ -0,0 +1,8 @@
|
||||
#ifndef __TF0_H
|
||||
#define __TF0_H
|
||||
|
||||
int tf0100(int argc, char* argv[]);
|
||||
int tf0200(int argc, char* argv[]);
|
||||
int tf0500(int argc, char* argv[]);
|
||||
|
||||
#endif
|
590
src/tf/tf0200.cpp
Normal file
590
src/tf/tf0200.cpp
Normal file
@ -0,0 +1,590 @@
|
||||
#include <relapp.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h> // cache()
|
||||
#include <recset.h> // TISAM_recordset
|
||||
#include <rmoviva.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "cglib03.h"
|
||||
|
||||
#include "tf0.h"
|
||||
#include "tf0200a.h"
|
||||
|
||||
#define CAMPI_CON_BOOLEAN F_TOTOPATT
|
||||
|
||||
// ComLiqPerIva: Comunicazione Liquidazioni Periodiche IVA
|
||||
|
||||
/** Utilities **/
|
||||
// Ritorna un cursore di tab.PRM
|
||||
const TCursor getPRM(int anno)
|
||||
{
|
||||
static TRelation rprm(LF_TAB);
|
||||
TRectype from(rprm.curr()); from.put("COD", "PRM");from.put("CODTAB", anno);
|
||||
TRectype to(rprm.curr()); to.put("COD" , "PRM");to.put("CODTAB", anno);
|
||||
|
||||
TCursor cprm(&rprm, "", 1, &from, &to);
|
||||
return cprm;
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di tabcom.LIM
|
||||
const TRectype getLIM(int anno, int mese)
|
||||
{
|
||||
TString key; key << anno;
|
||||
if(mese < 10)
|
||||
key << "0" << mese;
|
||||
else
|
||||
key << mese;
|
||||
return cache().get("LIM", key);
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di tabcom.LIA
|
||||
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)
|
||||
{
|
||||
// Questa tabella ha come chiave l'inizio validità, creo un cursore e scorro finche non trovo l'ultimo periodo valido
|
||||
static TRelation rver(LF_TABCOM);
|
||||
static TRectype from(rver.curr()); from.put("COD", "VER");
|
||||
static TRectype to(rver.curr()); to.put("COD" , "VER");
|
||||
|
||||
static TCursor cver(&rver, "", 1, &from, &to);
|
||||
|
||||
// Costruisco il controllo sulla chiave
|
||||
TString key; key << anno;
|
||||
if(mese < 10)
|
||||
key << "0" << mese;
|
||||
else
|
||||
key << mese;
|
||||
|
||||
TRectype rowRet(LF_TABCOM);
|
||||
|
||||
for(cver = 0; cver.pos() < cver.items(); ++cver)
|
||||
{
|
||||
TRectype rowVer = cver.curr();
|
||||
if(rowVer.get("CODTAB") < key)
|
||||
{
|
||||
rowRet = rowVer;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
return rowRet;
|
||||
}
|
||||
|
||||
// Scopiazzata brutalmente da cg4304.cpp
|
||||
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);
|
||||
int flag = 0;
|
||||
|
||||
imponibile_diff = imposta_diff = imponibile_xcas = imposta_xcas = ZERO;
|
||||
|
||||
TString limit; limit << "ANNOLIQ=" << anno;
|
||||
if (mese < 13) limit << " MESELIQ=" << mese;
|
||||
TString query; // righe pagamento (TIPOMOV>=3) ed escluse NC!
|
||||
query << "USE IVADIFF KEY 2 SELECT (TIPOMOV>2)&&(TIPOIVA=" << tipoiva << ")"
|
||||
<< "\nFROM " << limit << "\nTO " << limit;
|
||||
|
||||
TISAM_recordset id(query);
|
||||
const TRectype& rec = id.cursor()->curr();
|
||||
for (bool ok = id.move_first(); ok; ok = id.move_next())
|
||||
{
|
||||
const real iva = rec.get_real(RMI_IMPOSTA);
|
||||
const real imp = rec.get_real(RMI_IMPONIBILE);
|
||||
if (!iva.is_zero() || !imp.is_zero())
|
||||
{
|
||||
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;
|
||||
default: break;
|
||||
}
|
||||
flag |= tipodiff;
|
||||
}
|
||||
}
|
||||
|
||||
if (tipoiva == 2)
|
||||
{
|
||||
real perc_prorata;
|
||||
|
||||
query = "USE PLM";
|
||||
query << "\nFROM CODTAB=" << anno << "\nTO CODTAB=" << anno;
|
||||
TISAM_recordset ip(query);
|
||||
const TRectype& recp = ip.cursor()->curr();
|
||||
for (bool ok = ip.move_first(); ok && perc_prorata == ZERO; ok = ip.move_next())
|
||||
{
|
||||
int m = atoi(ip.get("CODTAB").as_string().mid(10));
|
||||
real p = ip.get("R12").as_real();
|
||||
if (m == mese && p != ZERO)
|
||||
perc_prorata = p;
|
||||
}
|
||||
|
||||
if (perc_prorata > ZERO)
|
||||
{
|
||||
real ind = imposta_diff * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_diff -= ind;
|
||||
ind = imposta_xcas * perc_prorata / CENTO;
|
||||
ind.round(TCurrency::get_firm_dec());
|
||||
imposta_xcas -= ind;
|
||||
}
|
||||
}
|
||||
|
||||
return flag;
|
||||
}
|
||||
|
||||
/* Da errori in allocazione TArray
|
||||
const TISAM_recordset getCurIvaXCassa(TDate data_da, TDate data_a, TString codreg_att)
|
||||
{
|
||||
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";
|
||||
TISAM_recordset id(query);
|
||||
id.set_var("#DAL", data_da);
|
||||
id.set_var("#AL", data_a);
|
||||
id.set_var("#REG", codreg_att);
|
||||
return id;
|
||||
}
|
||||
*/
|
||||
|
||||
class ComLiqPerIva_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
bool mensile;
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
void extractinator();
|
||||
|
||||
public:
|
||||
ComLiqPerIva_mask() : TAutomask("tf0200a") { first_focus(F_ANNO); }
|
||||
};
|
||||
|
||||
bool ComLiqPerIva_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_ANNO:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
TString cod = get(F_CODDITTA); cod << get_int(F_ANNO);
|
||||
if(cache().get("%LIA", cod).empty())
|
||||
{
|
||||
warning_box("Attenzione anno di liquidazione non presente");
|
||||
set(F_ANNO, "");
|
||||
break;
|
||||
}
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
mensile = true;
|
||||
enable(F_MESE);
|
||||
disable(F_TRIMESTRE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mensile = false;
|
||||
disable(F_MESE);
|
||||
enable(F_TRIMESTRE);
|
||||
}
|
||||
// Abilito i campi a schiena
|
||||
for(int i = F_SUBFORNITURE; i <= F_VEREFF; i++)
|
||||
{
|
||||
enable(i);
|
||||
if(i >= CAMPI_CON_BOOLEAN)
|
||||
{
|
||||
//enable(i + 50); Anche disabilitati funzionano
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case F_MESE:
|
||||
if(e == fe_modify)
|
||||
set(F_TRIMESTRE, (get_int(F_MESE) - 1) / 3 + 1);
|
||||
break;
|
||||
case F_TRIMESTRE:
|
||||
if(e == fe_modify)
|
||||
set(F_MESE, get_int(F_TRIMESTRE) * 3);
|
||||
break;
|
||||
case DLG_RECALC:
|
||||
// Vado a prendere i dati di quel mese dalla liquidazione IVA
|
||||
if(e == fe_button)
|
||||
{
|
||||
// Controllo che non ci sia già
|
||||
if(!cache().get(LF_IVALIQ, TString(get(F_ANNO)) << "|" << get(F_MESE)).empty())
|
||||
{
|
||||
if(!yesno_box("Sono già stati elaborati questi dati, si desidera ricalcolarli?"))
|
||||
break;
|
||||
}
|
||||
extractinator();
|
||||
}
|
||||
break;
|
||||
case DLG_EMAIL:
|
||||
// Richiamo il programma di invio
|
||||
// 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
|
||||
{
|
||||
set(o.dlg() + 50, "X");
|
||||
}
|
||||
|
||||
// Controllo sull'aggiornamento di campi collegati ad altri
|
||||
if(e == fe_modify)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
// Iva Esigibile VS Iva Detratta
|
||||
case F_IVAES :
|
||||
case F_IVAESXC :
|
||||
case F_IVAESDIFF :
|
||||
case F_IVADET :
|
||||
case F_IVADETXC :
|
||||
case F_IVADETDIFF :
|
||||
{
|
||||
real ivaes = get_real(F_IVAES) + get_real(F_IVAESXC) + get_real(F_IVAESDIFF);
|
||||
real ivadet = get_real(F_IVADET) + get_real(F_IVADETXC) + get_real(F_IVADETDIFF);
|
||||
if((ivaes - ivadet) >= ZERO)
|
||||
{
|
||||
set(F_IVADOV, ivaes - ivadet);
|
||||
set(F_IVADOVC, ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
set(F_IVADOV, ZERO);
|
||||
set(F_IVADOVC, (ivaes - ivadet) * -UNO);
|
||||
}
|
||||
}
|
||||
|
||||
// IVA da versare VS a credito
|
||||
case F_IVADOV :
|
||||
case F_DEBPREC :
|
||||
case F_INTLIQTRI :
|
||||
case F_IVADOVC :
|
||||
case F_CREPREC :
|
||||
case F_CREAPREC :
|
||||
case F_VEAUE :
|
||||
case F_CREIMP :
|
||||
case F_ACCDOV :
|
||||
{
|
||||
// Ricalcolo VP13 e VP14
|
||||
real debito = get_real(F_IVADOV) + get_real(F_DEBPREC) + get_real(F_INTLIQTRI);
|
||||
real credito = get_real(F_IVADOVC) + get_real(F_CREPREC) + get_real(F_CREAPREC) + get_real(F_VEAUE) + get_real(F_CREIMP) + get_real(F_ACCDOV);
|
||||
if(debito - credito >= ZERO)
|
||||
{
|
||||
set(F_IVAVER, debito - credito);
|
||||
set(F_IVAVERC, ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
set(F_IVAVER, ZERO);
|
||||
set(F_IVAVERC, credito - debito);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Funzione che effettivamente estrapola i dati necessari
|
||||
void ComLiqPerIva_mask::extractinator() // Per gli amici GTFO
|
||||
{
|
||||
/* Devo estrapolare più mesi, per farlo vado ciclo n volte (1 o 3) in base se stiamo parlando di trimestralità o meno
|
||||
* 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 anno = get_int(F_ANNO);
|
||||
|
||||
// Valori da calcolare
|
||||
real totopatt = ZERO;
|
||||
real totopattxc = ZERO;
|
||||
real totoppas = ZERO;
|
||||
real totoppasxc = ZERO;
|
||||
real ivaes = ZERO;
|
||||
real ivaesxc = ZERO;
|
||||
real ivaesdiff = ZERO;
|
||||
real ivadet = ZERO;
|
||||
real ivadetxc = ZERO;
|
||||
real ivadetdiff = ZERO;
|
||||
real rettifiche = ZERO;
|
||||
real varimp = ZERO;
|
||||
real rimborsi = ZERO;
|
||||
real impnover = ZERO;
|
||||
real crespec = ZERO;
|
||||
real vereff = ZERO;
|
||||
real ivadov = ZERO;
|
||||
real ivadovc = ZERO;
|
||||
real debprec = ZERO;
|
||||
real creprec = ZERO;
|
||||
real creaprec = ZERO;
|
||||
real intliqtri = ZERO;
|
||||
real accdov = ZERO;
|
||||
real ivaver = ZERO;
|
||||
real ivaverc = ZERO;
|
||||
|
||||
// Costanti
|
||||
const TString codreg_att = "VEN";
|
||||
const TString codreg_pas = "ACQ";
|
||||
|
||||
for(; start <= end; start++)
|
||||
{
|
||||
TDate data_da(1, start, anno);
|
||||
TDate data_a(31, start, anno);
|
||||
|
||||
/****************************************************************************************************************
|
||||
* TOTOPATT, TOTOPATTXC, TOTOPPAS, TOTOPPASXC, IVAES, IVAESXC, IVAESDIFF,
|
||||
* IVADET , IVADETXC, IVADETDIFF
|
||||
****************************************************************************************************************/
|
||||
|
||||
// Riga LIM
|
||||
const TRectype rowLim = getLIM(anno, start);
|
||||
|
||||
// Controllo che la liquidazione è stata effettuata
|
||||
if(rowLim.empty())
|
||||
{
|
||||
error_box("Attenzione non è stata calcolata la liquidazione del periodo corrente");
|
||||
return;
|
||||
}
|
||||
|
||||
// Riga LIA
|
||||
const TRectype rowLia = getLIA(anno);
|
||||
|
||||
// Calcolo il cursore di PRM
|
||||
//TCursor curPrm = getPRM(anno);
|
||||
|
||||
static TRelation rprm(LF_TAB);
|
||||
TRectype from(rprm.curr()); from.put("COD", "PRM");from.put("CODTAB", anno);
|
||||
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));
|
||||
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)
|
||||
{
|
||||
totopatt = totopatt + rowPrm.get_real("R0");
|
||||
}
|
||||
else if(rowPrm.get("CODTAB").sub(10,13) == codreg_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);
|
||||
|
||||
|
||||
// IVA detraibile
|
||||
tokenPrec.get(1, ivadet);
|
||||
calc_inc_diff(anno, start, 2, imponibile_diff, imposta_diff, imponibile_xcas, imposta_xcas);
|
||||
|
||||
}
|
||||
|
||||
/** Resto *****************************************************************************************************/
|
||||
|
||||
ivaes = ivaes + rowLim.get_real("R13");
|
||||
ivadet = ivadet + rowLim.get_real("R12");
|
||||
|
||||
rettifiche = rettifiche + rowLim.get_real("R5");
|
||||
varimp = varimp + rowLim.get_real("R17");
|
||||
rimborsi = rimborsi + rowLim.get_real("R1");
|
||||
impnover = impnover + rowLim.get_real("R18");
|
||||
crespec = crespec + rowLim.get_real("R19");
|
||||
vereff = vereff + rowLim.get_real("R8");
|
||||
|
||||
debprec = debprec + rowLim.get_real("S2");
|
||||
|
||||
appReal = ZERO;
|
||||
|
||||
// Credito periodo precedente
|
||||
tokenPrec.get(2, appReal);
|
||||
creprec = creprec + appReal;
|
||||
|
||||
// Credito anno precedente
|
||||
creaprec = creaprec + rowLia.get_real("R0");
|
||||
|
||||
intliqtri = intliqtri + rowLim.get_real("R14");
|
||||
accdov = accdov + rowLim.get_real("R11");
|
||||
}
|
||||
|
||||
// Controllo debprec
|
||||
// Calcolo prendendo dalla tabella %VER
|
||||
TRectype rowVer = getVER(anno, start);
|
||||
if(rowVer.empty() || rowVer.get_real("R5") == ZERO)
|
||||
{
|
||||
error_box("Non è stata valorizzato correttamente il campo \"Periodico\" in \"Versamenti ed interessi IVA\"");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(debprec > rowVer.get_real("R5")) // Se è maggiore di 25.82€ va azzerato
|
||||
debprec = ZERO;
|
||||
}
|
||||
|
||||
// Imposto tutti i campi
|
||||
set(F_TOTOPATT, totopatt);
|
||||
set(F_TOTOPATTXC, totopattxc);
|
||||
set(F_TOTOPPAS, totoppas);
|
||||
set(F_TOTOPPASXC, totoppasxc);
|
||||
set(F_IVAES, ivaes);
|
||||
set(F_IVAESXC, ivaesxc);
|
||||
set(F_IVAESDIFF, ivaesdiff);
|
||||
set(F_IVADET, ivadet);
|
||||
set(F_IVADETXC, ivadetxc);
|
||||
set(F_IVADETDIFF, ivadetdiff);
|
||||
|
||||
// Iva dovuta o a credito
|
||||
if(ivaes - ivadet > ZERO)
|
||||
{
|
||||
ivadov = ivaes - ivadet;
|
||||
set(F_IVADOV, ivadov);
|
||||
set(F_IVADOVC, ZERO);
|
||||
}
|
||||
else
|
||||
{
|
||||
ivadovc = ivadet - ivaes;
|
||||
set(F_IVADOV, ZERO);
|
||||
set(F_IVADOVC, ivadovc);
|
||||
}
|
||||
|
||||
set(F_DEBPREC, debprec);
|
||||
set(F_CREPREC, creprec);
|
||||
set(F_CREAPREC, creaprec);
|
||||
//set(F_VEAUE, veaue); // Campi non calcolati, messi qua per un eventuale futuro
|
||||
//set(F_CREIMP, creimp);
|
||||
set(F_INTLIQTRI, intliqtri);
|
||||
set(F_ACCDOV, accdov);
|
||||
|
||||
// Calcolo l'IVA da versare o a Credito
|
||||
ivaver = (ivadov + debprec + intliqtri) - (ivadovc + creprec + creaprec + get_real(F_VEAUE) + get_real(F_CREIMP) + accdov);
|
||||
ivaverc = (ivadovc + creprec + creaprec + get_real(F_VEAUE) + get_real(F_CREIMP) + accdov) - (ivadov + debprec + intliqtri);
|
||||
|
||||
if(ivaver >= ZERO)
|
||||
set(F_IVAVER, ivaver);
|
||||
else
|
||||
set(F_IVAVERC, ivaverc);
|
||||
|
||||
set(F_RETTIFICHE, rettifiche);
|
||||
set(F_VARIMP, varimp);
|
||||
set(F_RIMBORSI, rimborsi);
|
||||
set(F_IMPNOVER, impnover);
|
||||
set(F_CRESPEC, crespec);
|
||||
set(F_VEREFF, vereff);
|
||||
|
||||
// Azzero i booleani
|
||||
for(int i = B_TOTOPATT; i <= B_VEREFF; i++)
|
||||
{
|
||||
set(i, "");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class ComLiqPerIva_app : public TRelation_application
|
||||
{
|
||||
private:
|
||||
ComLiqPerIva_mask* _mask;
|
||||
TRelation* _rel;
|
||||
protected:
|
||||
bool user_create();
|
||||
bool user_destroy();
|
||||
virtual TMask* get_mask(int mode) { return _mask; }
|
||||
|
||||
public:
|
||||
virtual TRelation* get_relation() const {return (TRelation*)_rel;}
|
||||
};
|
||||
|
||||
bool ComLiqPerIva_app::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_IVALIQ);
|
||||
_mask = new ComLiqPerIva_mask;
|
||||
set_search_field(F_ANNO);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ComLiqPerIva_app::user_destroy()
|
||||
{
|
||||
delete _mask;
|
||||
return true;
|
||||
}
|
||||
|
||||
int tf0200(int argc, char* argv[])
|
||||
{
|
||||
ComLiqPerIva_app app;
|
||||
app.run(argc, argv, TR("Trasferimento dati liquidazione IVA"));
|
||||
return 0;
|
||||
}
|
64
src/tf/tf0200a.h
Normal file
64
src/tf/tf0200a.h
Normal file
@ -0,0 +1,64 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_ANNO 103
|
||||
#define F_MESE 104
|
||||
#define F_TRIMESTRE 105
|
||||
#define F_SUBFORNITURE 106
|
||||
#define F_EVECC 107
|
||||
#define F_TOTOPATT 108
|
||||
#define F_TOTOPATTXC 109
|
||||
#define F_TOTOPPAS 110
|
||||
#define F_TOTOPPASXC 111
|
||||
#define F_IVAES 112
|
||||
#define F_IVAESXC 113
|
||||
#define F_IVAESDIFF 114
|
||||
#define F_IVADET 115
|
||||
#define F_IVADETXC 116
|
||||
#define F_IVADETDIFF 117
|
||||
#define F_IVADOV 118
|
||||
#define F_IVADOVC 119
|
||||
#define F_DEBPREC 120
|
||||
#define F_CREPREC 121
|
||||
#define F_CREAPREC 122
|
||||
#define F_VEAUE 123
|
||||
#define F_CREIMP 124
|
||||
#define F_INTLIQTRI 125
|
||||
#define F_ACCDOV 126
|
||||
#define F_IVAVER 127
|
||||
#define F_IVAVERC 128
|
||||
#define F_RETTIFICHE 129
|
||||
#define F_VARIMP 130
|
||||
#define F_RIMBORSI 131
|
||||
#define F_IMPNOVER 132
|
||||
#define F_CRESPEC 133
|
||||
#define F_VEREFF 134
|
||||
|
||||
|
||||
/* Booleani controllo modifiche (+50 rispetto al campo a cui si riferisce) */
|
||||
#define B_TOTOPATT 158
|
||||
#define B_TOTOPATTXC 159
|
||||
#define B_TOTOPPAS 160
|
||||
#define B_TOTOPPASXC 161
|
||||
#define B_IVAES 162
|
||||
#define B_IVAESXC 163
|
||||
#define B_IVAESDIFF 164
|
||||
#define B_IVADET 165
|
||||
#define B_IVADETXC 166
|
||||
#define B_IVADETDIFF 167
|
||||
#define B_IVADOV 168
|
||||
#define B_IVADOVC 169
|
||||
#define B_DEBPREC 170
|
||||
#define B_CREPREC 171
|
||||
#define B_CREAPREC 172
|
||||
#define B_VEAUE 173
|
||||
#define B_CREIMP 174
|
||||
#define B_INTLIQTRI 175
|
||||
#define B_ACCDOV 176
|
||||
#define B_IVAVER 177
|
||||
#define B_IVAVERC 178
|
||||
#define B_RETTIFICHE 179
|
||||
#define B_VARIMP 180
|
||||
#define B_RIMBORSI 181
|
||||
#define B_IMPNOVER 182
|
||||
#define B_CRESPEC 183
|
||||
#define B_VEREFF 184
|
509
src/tf/tf0200a.uml
Normal file
509
src/tf/tf0200a.uml
Normal file
@ -0,0 +1,509 @@
|
||||
#include "tf0200a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
BUTTON DLG_RECALC 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Elabora"
|
||||
PICTURE TOOL_CONVERT
|
||||
END
|
||||
|
||||
BUTTON DLG_EMAIL 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Invia"
|
||||
PICTURE TOOL_EMAIL
|
||||
END
|
||||
|
||||
BUTTON DLG_NULL 2 2
|
||||
BEGIN
|
||||
PROMPT -1 1 ""
|
||||
PICTURE 0
|
||||
END
|
||||
|
||||
#include <relapbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Impostazioni" 0 2 0 0
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice "
|
||||
FLAGS "FZD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 20 1 ""
|
||||
USE LF_NDITTE KEY 2
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione Sociale@60" RAGSOC
|
||||
DISPLAY "Codice" CODDITTA
|
||||
COPY OUTPUT F_CODDITTA
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
FIELD ANNO
|
||||
PROMPT 1 2 "Anno "
|
||||
USE LF_IVALIQ
|
||||
INPUT ANNO F_ANNO
|
||||
INPUT MESE F_MESE
|
||||
INPUT TRIMESTRE F_TRIMESTRE
|
||||
DISPLAY "Anno Liquid.IVA" ANNO
|
||||
DiSPLAY "Mese" MESE
|
||||
DISPLAY "Trimestre" TRIMESTRE
|
||||
OUTPUT F_ANNO ANNO
|
||||
OUTPUT F_MESE MESE
|
||||
OUTPUT F_TRIMESTRE TRIMESTRE
|
||||
KEY 1
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "A"
|
||||
WARNING "Inserire un anno di liquidazione"
|
||||
END
|
||||
|
||||
NUMBER F_MESE 2
|
||||
BEGIN
|
||||
PROMPT 20 2 "Mese "
|
||||
SHEET " |Mese@30"
|
||||
INPUT F_MESE
|
||||
OUTPUT F_MESE
|
||||
ITEM "|"
|
||||
ITEM "1|Gennaio"
|
||||
ITEM "2|Febbraio"
|
||||
ITEM "3|Marzo"
|
||||
ITEM "4|Aprile"
|
||||
ITEM "5|Maggio"
|
||||
ITEM "6|Giugno"
|
||||
ITEM "7|Luglio"
|
||||
ITEM "8|Agosto"
|
||||
ITEM "9|Settembre"
|
||||
ITEM "10|Ottobre"
|
||||
ITEM "11|Novembre"
|
||||
ITEM "12|Dicembre"
|
||||
ITEM "13|Mese mistico"
|
||||
HELP "Mese dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
FLAGS ""
|
||||
KEY 1
|
||||
FIELD MESE
|
||||
END
|
||||
|
||||
NUMBER F_TRIMESTRE 2
|
||||
BEGIN
|
||||
PROMPT 40 2 "Trimestre "
|
||||
SHEET " |Trimestre@30"
|
||||
INPUT F_TRIMESTRE
|
||||
OUTPUT F_TRIMESTRE
|
||||
ITEM "|"
|
||||
ITEM "1|Primo"
|
||||
ITEM "2|Secondo"
|
||||
ITEM "3|Terzo"
|
||||
ITEM "4|Quarto"
|
||||
HELP "Trimestre dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
KEY 1
|
||||
FLAGS ""
|
||||
FIELD TRIMESTRE
|
||||
END
|
||||
|
||||
BOOLEAN F_SUBFORNITURE
|
||||
BEGIN
|
||||
PROMPT 1 3 "Subforniture"
|
||||
FIELD SUBFOR
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_EVECC 1
|
||||
BEGIN
|
||||
PROMPT 24 3 "Eventi eccezionali "
|
||||
FIELD EVECC
|
||||
FLAGS "D"
|
||||
ENDPAGE
|
||||
|
||||
NUMBER F_TOTOPATT 16 2
|
||||
BEGIN
|
||||
PROMPT 1 4 "Totale op. attive "
|
||||
FIELD TOTOPATT
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_TOTOPATT
|
||||
BEGIN
|
||||
PROMPT 45 4 ""
|
||||
FIELD BTOTOPATT
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_TOTOPATTXC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 5 "Totale op. attive x c."
|
||||
FIELD TOTOPATTXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_TOTOPATTXC
|
||||
BEGIN
|
||||
PROMPT 45 5 ""
|
||||
FIELD BTOTOPATTX
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_TOTOPPAS 16 2
|
||||
BEGIN
|
||||
PROMPT 1 6 "Totale op. passive "
|
||||
FIELD TOTOPPAS
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_TOTOPPAS
|
||||
BEGIN
|
||||
PROMPT 45 6 ""
|
||||
FIELD BTOTOPPAS
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_TOTOPPASXC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 7 "Totale op. passive x c."
|
||||
FIELD TOTOPPASXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_TOTOPPASXC
|
||||
BEGIN
|
||||
PROMPT 45 7 ""
|
||||
FIELD BTOTOPPASX
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVAES 16 2
|
||||
BEGIN
|
||||
PROMPT 1 8 "IVA esigibile "
|
||||
FIELD IVAES
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVAES
|
||||
BEGIN
|
||||
PROMPT 45 8 ""
|
||||
FIELD BIVAES
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVAESXC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 9 "IVA esigibile x c. "
|
||||
FIELD IVAESXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVAESXC
|
||||
BEGIN
|
||||
PROMPT 45 9 ""
|
||||
FIELD BIVAESXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVAESDIFF 16 2
|
||||
BEGIN
|
||||
PROMPT 1 10 "IVA esigibile diff "
|
||||
FIELD IVAESDIFF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVAESDIFF
|
||||
BEGIN
|
||||
PROMPT 45 10 ""
|
||||
FIELD BIVAESDIFF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVADET 16 2
|
||||
BEGIN
|
||||
PROMPT 1 11 "IVA detratta "
|
||||
FIELD IVADET
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVADET
|
||||
BEGIN
|
||||
PROMPT 45 11 ""
|
||||
FIELD BIVADET
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVADETXC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 12 "IVA detratta x c. "
|
||||
FIELD IVADETXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVADETXC
|
||||
BEGIN
|
||||
PROMPT 45 12 ""
|
||||
FIELD BIVADETXC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVADETDIFF 16 2
|
||||
BEGIN
|
||||
PROMPT 1 13 "IVA detratta diff "
|
||||
FIELD IVADETDIFF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVADETDIFF
|
||||
BEGIN
|
||||
PROMPT 45 13 ""
|
||||
FIELD BIVADETDIF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVADOV 16 2
|
||||
BEGIN
|
||||
PROMPT 1 14 "IVA dovuta "
|
||||
FIELD IVADOV
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVADOV
|
||||
BEGIN
|
||||
PROMPT 45 14 ""
|
||||
FIELD BIVADOV
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_IVADOVC 16 2
|
||||
BEGIN
|
||||
PROMPT 50 14 "o a credito"
|
||||
FIELD IVADOVC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_IVADOVC
|
||||
BEGIN
|
||||
PROMPT 80 14 ""
|
||||
FIELD BIVADOVC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_DEBPREC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 15 "Debito precedente "
|
||||
FIELD DEBPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_DEBPREC
|
||||
BEGIN
|
||||
PROMPT 45 15 ""
|
||||
FIELD BDEBPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CREPREC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 16 "Credito precedente "
|
||||
FIELD CREPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_CREPREC
|
||||
BEGIN
|
||||
PROMPT 45 16 ""
|
||||
FIELD BCREPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CREAPREC 16 2
|
||||
BEGIN
|
||||
PROMPT 1 17 "Credito anno precedente"
|
||||
FIELD CREAPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_CREAPREC
|
||||
BEGIN
|
||||
PROMPT 45 17 ""
|
||||
FIELD BCREAPREC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_VEAUE 16 2
|
||||
BEGIN
|
||||
PROMPT 1 18 "Versamenti auto UE "
|
||||
FIELD VEAUE
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_VEAUE
|
||||
BEGIN
|
||||
PROMPT 45 18 ""
|
||||
FIELD BVEAUE
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CREIMP 16 2
|
||||
BEGIN
|
||||
PROMPT 1 19 "Crediti di imposta "
|
||||
FIELD CREIMP
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_CREIMP
|
||||
BEGIN
|
||||
PROMPT 45 19 ""
|
||||
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 "
|
||||
FIELD RETTIFICHE
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_RETTIFICHE
|
||||
BEGIN
|
||||
PROMPT 45 23 ""
|
||||
FIELD BRETTIFICH
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_VARIMP 16 2
|
||||
BEGIN
|
||||
PROMPT 1 24 "Variazioni d'imposta "
|
||||
FIELD VARIMP
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_VARIMP
|
||||
BEGIN
|
||||
PROMPT 45 24 ""
|
||||
FIELD BVARIMP
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_RIMBORSI 16 2
|
||||
BEGIN
|
||||
PROMPT 1 25 "Rimborsi "
|
||||
FIELD RIMBORSI
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_RIMBORSI
|
||||
BEGIN
|
||||
PROMPT 45 25 ""
|
||||
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 "
|
||||
FIELD CRESPEC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_CRESPEC
|
||||
BEGIN
|
||||
PROMPT 45 27 ""
|
||||
FIELD BCRESPEC
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_VEREFF 16 2
|
||||
BEGIN
|
||||
PROMPT 1 28 "Versamenti effettuati "
|
||||
FIELD VEREFF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN B_VEREFF
|
||||
BEGIN
|
||||
PROMPT 45 28 ""
|
||||
FIELD BVEREFF
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
ENDMASK
|
281
src/tf/tf0500.cpp
Normal file
281
src/tf/tf0500.cpp
Normal file
@ -0,0 +1,281 @@
|
||||
#include "tf0500a.h"
|
||||
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h> // cache()
|
||||
#include <textset.h> // TCSV_recordset
|
||||
#include <golem.h> // goto_url()
|
||||
#include <utility.h> // get_iva_sirio()
|
||||
|
||||
#define TIPO_FILE "DF"
|
||||
#define TFBASE "tf"
|
||||
|
||||
#define CODICE_FORNITURA "IVP17"
|
||||
|
||||
const TRectype getAnagDitta()
|
||||
{
|
||||
TString codanagr = cache().get(LF_NDITTE, prefix().firm().codice(), "TIPOA");
|
||||
codanagr << "|" << cache().get(LF_NDITTE, prefix().firm().codice(), "CODANAGR");
|
||||
return cache().get(LF_ANAG, codanagr);
|
||||
}
|
||||
|
||||
// Ritorna il record richiesto di tabcom.LIM
|
||||
const TRectype getLim(int anno, int mese)
|
||||
{
|
||||
TString key; key << anno;
|
||||
if(mese < 10)
|
||||
key << "0" << mese;
|
||||
else
|
||||
key << mese;
|
||||
return cache().get("LIM", key);
|
||||
}
|
||||
|
||||
const TRectype getLiq(int anno, int mese)
|
||||
{
|
||||
TString key; key << anno << "|";
|
||||
if(mese < 10)
|
||||
key << "0" << mese;
|
||||
else
|
||||
key << mese;
|
||||
return cache().get(LF_IVALIQ, key);
|
||||
}
|
||||
|
||||
TString formatCurrency(TString value)
|
||||
{
|
||||
real app(value);
|
||||
if(app == ZERO)
|
||||
return ",00";
|
||||
else
|
||||
return TCurrency(app).string();
|
||||
}
|
||||
|
||||
class TIvaSend_msk : public TAutomask
|
||||
{
|
||||
bool mese;
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
bool isMese() { return mese; }
|
||||
TIvaSend_msk() : TAutomask("tf0500a"){}
|
||||
};
|
||||
|
||||
bool TIvaSend_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch(o.dlg())
|
||||
{
|
||||
case F_ANNO:
|
||||
if(e == fe_modify)
|
||||
{
|
||||
TString cod = get(F_CODDITTA); cod << get_int(F_ANNO);
|
||||
if(cache().get("%LIA", cod).empty())
|
||||
{
|
||||
warning_box("Attenzione anno di liquidazione non presente");
|
||||
set(F_ANNO, "");
|
||||
break;
|
||||
}
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
mese = true;
|
||||
enable(F_DAMESE);
|
||||
enable(F_AMESE);
|
||||
disable(F_DATRIMESTRE);
|
||||
disable(F_ATRIMESTRE);
|
||||
}
|
||||
else
|
||||
{
|
||||
mese = false;
|
||||
disable(F_DAMESE);
|
||||
disable(F_AMESE);
|
||||
enable(F_DATRIMESTRE);
|
||||
enable(F_ATRIMESTRE);
|
||||
}
|
||||
}
|
||||
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--)
|
||||
{
|
||||
TString cod = get(F_CODDITTA);
|
||||
cod << i;
|
||||
if(cache().get("%LIA", cod).empty()) continue;
|
||||
if(cache().get("%LIA", cod, "S7") == "M")
|
||||
{
|
||||
set(F_ANNO, i);
|
||||
mese = true;
|
||||
enable(F_DAMESE);
|
||||
enable(F_AMESE);
|
||||
disable(F_DATRIMESTRE);
|
||||
disable(F_ATRIMESTRE);
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
set(F_ANNO, i);
|
||||
mese = false;
|
||||
disable(F_DAMESE);
|
||||
disable(F_AMESE);
|
||||
enable(F_DATRIMESTRE);
|
||||
enable(F_ATRIMESTRE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
class TIvaSend_app : public TSkeleton_application
|
||||
{
|
||||
void generateNSend(TIvaSend_msk& msk) { generate(msk); send(); }
|
||||
void generate(TIvaSend_msk& msk);
|
||||
TToken_string getTestata(TIvaSend_msk& msk);
|
||||
void send();
|
||||
public:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TIvaSend_app::generate(TIvaSend_msk& msk)
|
||||
{
|
||||
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);
|
||||
|
||||
// Decido di utilizzare I10 come numero progressivo di trasmissione
|
||||
int prog = rowLim.get_int("I10"); prog++;
|
||||
|
||||
TString nomeFile; nomeFile << "IT" << getAnagDitta().get("PAIV") << TIPO_FILE << prog << ".csv";
|
||||
|
||||
path.add(nomeFile);
|
||||
file.open(path, ios::out);
|
||||
|
||||
if(!file.is_open())
|
||||
error_box(TR("Impossibile aprire il file alla posizione %s", path));
|
||||
|
||||
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);
|
||||
for(; start <= end; start++)
|
||||
{
|
||||
|
||||
TToken_string riga(testata);
|
||||
if(msk.isMese())
|
||||
{
|
||||
riga.add(start); // Mese
|
||||
riga.add(""); // Trimestre
|
||||
}
|
||||
else
|
||||
{
|
||||
riga.add(""); // Mese
|
||||
riga.add(start); // Trimestre
|
||||
}
|
||||
|
||||
char subfor = rowLiq.get_bool("SUBFOR") ? 'X' : '\0';
|
||||
riga.add(subfor); // Flag Subfornitura
|
||||
riga.add(""); // Eventi eccezionali
|
||||
riga.add(formatCurrency(rowLiq.get("TOTOPATT"))); // Totale operazioni attive (al netto dell'IVA)
|
||||
riga.add(formatCurrency(rowLiq.get("TOTOPPAS"))); // Totale operazioni passive (al netto dell'IVA)
|
||||
|
||||
real ivaes = rowLiq.get_real("IVAES") + rowLiq.get_real("IVAESXC") + rowLiq.get_real("IVAESDIFF");
|
||||
riga.add(formatCurrency(ivaes.string())); // IVA esigibile
|
||||
|
||||
real ivadet = rowLiq.get_real("IVADET") + rowLiq.get_real("IVADETXC") + rowLiq.get_real("IVADETDIFF");
|
||||
riga.add(formatCurrency(ivadet.string())); // IVA detratta
|
||||
|
||||
riga.add(formatCurrency(rowLiq.get("IVADOV"))); // IVA dovuta
|
||||
riga.add(formatCurrency(rowLiq.get("IVADOVC"))); // IVA a credito VP6 col 2
|
||||
riga.add(formatCurrency(rowLiq.get("DEBPREC"))); // Debito periodo precedente
|
||||
riga.add(formatCurrency(rowLiq.get("CREPREC"))); // Credito periodo precedente
|
||||
riga.add(formatCurrency(rowLiq.get("CREAPREC"))); // Credito anno precedente
|
||||
riga.add(formatCurrency(rowLiq.get("VEAUE"))); // Versamenti auto UE
|
||||
riga.add(formatCurrency(rowLiq.get("CREIMP"))); // Crediti di imposta
|
||||
riga.add(formatCurrency(rowLiq.get("INTLIQTRI"))); // Interessi dovuti per liquidazioni trimestrali
|
||||
riga.add(formatCurrency(rowLiq.get("ACCDOV"))); // Acconto dovuto
|
||||
riga.add(formatCurrency(rowLiq.get("IVAVER"))); // IVA da versare
|
||||
riga.add(formatCurrency(rowLiq.get("IVAVERC"))); // IVA a credito VP14 col 2
|
||||
riga.add(prog); // Numero interno trasmissione
|
||||
riga.add(""); // Flag trasmesso
|
||||
riga.add(""); // Flag accettato
|
||||
|
||||
// Appendo al file
|
||||
file << riga << "\n";
|
||||
}
|
||||
file.close();
|
||||
// Aggiorno l'univoco
|
||||
|
||||
rowLim.put("I14", prog);
|
||||
if(rowLim.rewrite(TLocalisamfile(LF_TAB)) != NOERR)
|
||||
{
|
||||
error_box("Errore aggiornamento progressivo");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TToken_string TIvaSend_app::getTestata(TIvaSend_msk& msk)
|
||||
{
|
||||
TToken_string testata; // Token string di virgole
|
||||
testata.add(CODICE_FORNITURA); // Codice Fornitura
|
||||
testata.add(""); // Cod.Fisc. Sost. Dich.
|
||||
testata.add(""); // Cod. Carica Sost. Dich.
|
||||
testata.add(msk.get_int(F_ANNO)); // Anno comunicazione
|
||||
testata.add(""); // Mese comunicazione
|
||||
|
||||
TRectype anaDitta = getAnagDitta();
|
||||
|
||||
testata.add(anaDitta.get("COFI")); // Codice fiscale
|
||||
testata.add(anaDitta.get("PAIV")); // Partita IVA
|
||||
testata.add(""); // P.IVA Controllante
|
||||
testata.add(""); // Flag Liq. gruppo
|
||||
testata.add(""); // Flag firma comunicazione
|
||||
testata.add(""); // Cod.Fisc. Dichiarante
|
||||
testata.add(""); // Cod.Carica Dichiarante
|
||||
testata.add(""); // Cod.Fisc. Soc. Dichiarante
|
||||
testata.add(""); // Cod.Fisc. Intermediario
|
||||
testata.add(""); // Flag Impegno
|
||||
testata.add(""); // Data Impegno
|
||||
testata.add(""); // Flag Firma Intermediario
|
||||
testata.add(""); // Flag Conferma
|
||||
testata.add(get_iva_sirio());
|
||||
return testata;
|
||||
}
|
||||
|
||||
void TIvaSend_app::send()
|
||||
{
|
||||
TFilename tmp;
|
||||
tmp = TFBASE"\\SiaggTFCAMPO.jar";
|
||||
tmp.make_absolute_path();
|
||||
|
||||
DIRECTORY old_dir; xvt_fsys_get_dir(&old_dir);
|
||||
DIRECTORY new_dir; xvt_fsys_convert_str_to_dir(tmp.path(), &new_dir);
|
||||
xvt_fsys_set_dir(&new_dir);
|
||||
const bool good = goto_url(tmp);
|
||||
if (good)
|
||||
xvt_sys_sleep(3000);
|
||||
else
|
||||
error_box(FR("Impossibile eseguire Java -jar %s"), (const char*)tmp);
|
||||
xvt_fsys_set_dir(&old_dir);
|
||||
|
||||
}
|
||||
|
||||
void TIvaSend_app::main_loop()
|
||||
{
|
||||
TIvaSend_msk msk;
|
||||
while(msk.run() == K_ENTER)
|
||||
{
|
||||
generateNSend(msk);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int tf0500(int argc, char* argv[])
|
||||
{
|
||||
TIvaSend_app app;
|
||||
app.run(argc, argv, TR("Trasferimento dati liquidazione IVA"));
|
||||
return 0;
|
||||
}
|
8
src/tf/tf0500a.h
Normal file
8
src/tf/tf0500a.h
Normal file
@ -0,0 +1,8 @@
|
||||
#define F_PATH 101
|
||||
#define F_CODDITTA 102
|
||||
#define F_RAGSOC 103
|
||||
#define F_ANNO 104
|
||||
#define F_DAMESE 105
|
||||
#define F_AMESE 106
|
||||
#define F_DATRIMESTRE 107
|
||||
#define F_ATRIMESTRE 108
|
130
src/tf/tf0500a.uml
Normal file
130
src/tf/tf0500a.uml
Normal file
@ -0,0 +1,130 @@
|
||||
#include "tf0500a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <elabar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Impostazioni" 0 2 0 0
|
||||
|
||||
STRING F_PATH 255 45
|
||||
BEGIN
|
||||
PROMPT 0 1 "Cartella "
|
||||
DSELECT
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "M"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 2 "Codice "
|
||||
FLAGS "FZD"
|
||||
USE LF_NDITTE
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
DISPLAY "Codice" CODDITTA
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
OUTPUT F_CODDITTA CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50
|
||||
BEGIN
|
||||
PROMPT 20 2 ""
|
||||
USE LF_NDITTE KEY 2
|
||||
INPUT RAGSOC F_RAGSOC
|
||||
DISPLAY "Ragione Sociale@60" RAGSOC
|
||||
DISPLAY "Codice" CODDITTA
|
||||
COPY OUTPUT F_CODDITTA
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 1 3 "Anno "
|
||||
USE LF_IVALIQ
|
||||
INPUT ANNO F_ANNO
|
||||
DISPLAY "Anno Liquid.IVA" ANNO
|
||||
DiSPLAY "Mese" MESE
|
||||
DISPLAY "Trimestre" TRIMESTRE
|
||||
OUTPUT F_ANNO ANNO
|
||||
OUTPUT F_DAMESE MESE
|
||||
OUTPUT F_DATRIMESTRE TRIMESTRE
|
||||
CHECKTYPE REQUIRED
|
||||
FLAGS ""
|
||||
WARNING "Inserire un anno di liquidazione"
|
||||
END
|
||||
|
||||
NUMBER F_DAMESE 2
|
||||
BEGIN
|
||||
PROMPT 20 3 "Da mese "
|
||||
SHEET " |Mese@30"
|
||||
ITEM "|"
|
||||
ITEM "1|Gennaio"
|
||||
ITEM "2|Febbraio"
|
||||
ITEM "3|Marzo"
|
||||
ITEM "4|Aprile"
|
||||
ITEM "5|Maggio"
|
||||
ITEM "6|Giugno"
|
||||
ITEM "7|Luglio"
|
||||
ITEM "8|Agosto"
|
||||
ITEM "9|Settembre"
|
||||
ITEM "10|Ottobre"
|
||||
ITEM "11|Novembre"
|
||||
ITEM "12|Dicembre"
|
||||
ITEM "13|Mese mistico"
|
||||
HELP "Mese dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_AMESE 2
|
||||
BEGIN
|
||||
PROMPT 40 3 "A mese "
|
||||
SHEET " |Mese@30"
|
||||
ITEM "|"
|
||||
ITEM "1|Gennaio"
|
||||
ITEM "2|Febbraio"
|
||||
ITEM "3|Marzo"
|
||||
ITEM "4|Aprile"
|
||||
ITEM "5|Maggio"
|
||||
ITEM "6|Giugno"
|
||||
ITEM "7|Luglio"
|
||||
ITEM "8|Agosto"
|
||||
ITEM "9|Settembre"
|
||||
ITEM "10|Ottobre"
|
||||
ITEM "11|Novembre"
|
||||
ITEM "12|Dicembre"
|
||||
ITEM "13|Mese mistico"
|
||||
HELP "Mese dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_DATRIMESTRE 2
|
||||
BEGIN
|
||||
PROMPT 20 4 "Da trimestre "
|
||||
SHEET " |Trimestre@30"
|
||||
ITEM "|"
|
||||
ITEM "1|Primo"
|
||||
ITEM "2|Secondo"
|
||||
ITEM "3|Terzo"
|
||||
ITEM "4|Quarto"
|
||||
HELP "Trimestre dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ATRIMESTRE 2
|
||||
BEGIN
|
||||
PROMPT 40 4 "A trimestre "
|
||||
SHEET " |Trimestre@30"
|
||||
ITEM "|"
|
||||
ITEM "1|Primo"
|
||||
ITEM "2|Secondo"
|
||||
ITEM "3|Terzo"
|
||||
ITEM "4|Quarto"
|
||||
HELP "Trimestre dichiarazione, lasciare vuoto per inserirne uno nuovo"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
8
src/tf/tfmenu.men
Normal file
8
src/tf/tfmenu.men
Normal file
@ -0,0 +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"
|
Loading…
x
Reference in New Issue
Block a user