Correzioni liquidazione e dichiarazione annuale IVA

git-svn-id: svn://10.65.10.50/branches/R_10_00@22809 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2013-03-03 21:44:29 +00:00
parent e2c7783386
commit b865dbd7a9
19 changed files with 219 additions and 224 deletions

View File

@ -350,28 +350,24 @@ const char * TListaMov_application::get_error(int err) const
const int AllegClifo (int gruppo, int conto, long sottoconto) const int AllegClifo (int gruppo, int conto, long sottoconto)
{ {
TLocalisamfile clifo(LF_CLIFO); int alleg = 0;
int alleg;
TLocalisamfile clifo(LF_CLIFO);
clifo.setkey(3); clifo.setkey(3);
clifo.zero(); clifo.zero();
clifo.put(CLI_GRUPPO, gruppo); clifo.put(CLI_GRUPPO, gruppo);
clifo.put(CLI_CONTO, conto); clifo.put(CLI_CONTO, conto);
clifo.put(CLI_CODCF, sottoconto); clifo.put(CLI_CODCF, sottoconto);
clifo.read(); if (clifo.read() == NOERR)
if (clifo.good()) alleg = clifo.get_int(CLI_ALLEG);
alleg = clifo.curr().get_int(CLI_ALLEG);
else
alleg = 0;
return alleg; return alleg;
} }
const char * DescrConto (long gruppo, long conto, long sottoconto, const char* DescrConto (int gruppo, int conto, long sottoconto, char tipocf)
const char* tipocf)
{ {
TString& tmp = get_tmp_string(50); TString& tmp = get_tmp_string(50);
/*
TString16 key; TString16 key;
key << gruppo; key << gruppo;
if (conto != 0) if (conto != 0)
@ -382,7 +378,7 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
if (tmp.empty()) if (tmp.empty())
{ {
key.format("%s|%ld",tipocf , sottoconto); key.format("%c|%ld", tipocf , sottoconto);
const TRectype & clifo = cache().get(LF_CLIFO, key); const TRectype & clifo = cache().get(LF_CLIFO, key);
if (!clifo.empty()) if (!clifo.empty())
@ -399,20 +395,22 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
tmp = clifo.get("RAGSOC"); tmp = clifo.get("RAGSOC");
} }
} }
*/
const TBill bill(gruppo, conto, sottoconto, tipocf);
tmp = bill.descrizione();
return tmp; return tmp;
} }
bool CausAlleg (const char * cod) bool CausAlleg (const char * cod)
{ {
const TRectype & caus = cache().get(LF_CAUSALI, cod); const TRectype& caus = cache().get(LF_CAUSALI, cod);
const bool allegb = caus.get_bool(CAU_ALLEG); const bool allegb = caus.get_bool(CAU_ALLEG);
return allegb; return allegb;
} }
const char* TipoAttivita (const char* attreg, long codice_ditta) const char* TipoAttivita (const char* attreg, long codice_ditta)
{ {
TString16 key; key.format("%ld|%s", codice_ditta, attreg); TString16 key; key.format("%ld|%s", codice_ditta, attreg);
return cache().get(LF_ATTIV, key, ATT_TIPOATT); return cache().get(LF_ATTIV, key, ATT_TIPOATT);
} }
@ -582,7 +580,6 @@ void TListaMov_application::stampa_errori_rmov()
char tipoc = rec.get_char(RMV_TIPOCC); char tipoc = rec.get_char(RMV_TIPOCC);
bool g = FALSE; bool g = FALSE;
char t;
TBill tc (gruppo,conto,sottoconto); TBill tc (gruppo,conto,sottoconto);
@ -606,7 +603,7 @@ void TListaMov_application::stampa_errori_rmov()
set_row(_nr++, FR("@11gCodice gruppo/conto/sottoconto non presente in Piano dei Conti")); set_row(_nr++, FR("@11gCodice gruppo/conto/sottoconto non presente in Piano dei Conti"));
else else
{ {
t = pc.get_char(PCN_TMCF); const char t = pc.get_char(PCN_TMCF);
if (t != tipo) if (t != tipo)
set_row(_nr++, FR("@11gIl tipo C/F indicato non corrisponde a quello presente su Piano dei Conti")); set_row(_nr++, FR("@11gIl tipo C/F indicato non corrisponde a quello presente su Piano dei Conti"));
else else
@ -924,13 +921,13 @@ bool TListaMov_application::preprocess_page(int file,int counter)
{ {
set_row(_nr,"@4g%3s", (const char*) _causale); set_row(_nr,"@4g%3s", (const char*) _causale);
set_row(_nr,"@8g%-.20s", (const char*) _descr_causale); set_row(_nr,"@8g%-.20s", (const char*) _descr_causale);
_causale_gia_stampata = TRUE; _causale_gia_stampata = true;
} }
const TRectype& currig = cur->curr(LF_RMOV); const TRectype& currig = cur->curr(LF_RMOV);
int gruppo = currig.get_int(RMV_GRUPPO); const int gruppo = currig.get_int(RMV_GRUPPO);
int conto = currig.get_int(RMV_CONTO); const int conto = currig.get_int(RMV_CONTO);
long sottoconto = currig.get_long(RMV_SOTTOCONTO); const long sottoconto = currig.get_long(RMV_SOTTOCONTO);
const TString4 tipoc = currig.get(RMV_TIPOC); const char tipoc = currig.get_char(RMV_TIPOC);
_descr = DescrConto(gruppo, conto, sottoconto, tipoc); _descr = DescrConto(gruppo, conto, sottoconto, tipoc);
_alleg = AllegClifo(gruppo, conto, sottoconto); _alleg = AllegClifo(gruppo, conto, sottoconto);
_importo = currig.get_real(RMV_IMPORTO); _importo = currig.get_real(RMV_IMPORTO);
@ -1008,10 +1005,10 @@ bool TListaMov_application::preprocess_page(int file,int counter)
_causale_gia_stampata = TRUE; _causale_gia_stampata = TRUE;
} }
const TRectype& rmov = current_cursor()->curr(LF_RMOV); const TRectype& rmov = current_cursor()->curr(LF_RMOV);
int gruppo = rmov.get_int(RMV_GRUPPO); const int gruppo = rmov.get_int(RMV_GRUPPO);
int conto = rmov.get_int(RMV_CONTO); const int conto = rmov.get_int(RMV_CONTO);
long sottoconto = rmov.get_long(RMV_SOTTOCONTO); const long sottoconto = rmov.get_long(RMV_SOTTOCONTO);
const TString4 tipoc = rmov.get(RMV_TIPOC); const char tipoc = rmov.get_char(RMV_TIPOC);
_descr = DescrConto(gruppo, conto, sottoconto, tipoc); _descr = DescrConto(gruppo, conto, sottoconto, tipoc);
_importo = rmov.get_real(RMV_IMPORTO); _importo = rmov.get_real(RMV_IMPORTO);
_appoggio = toupper(rmov.get_char(RMV_SEZIONE)); _appoggio = toupper(rmov.get_char(RMV_SEZIONE));
@ -1907,11 +1904,20 @@ void TListaMov_application::incrementa_totali()
const int colonna = tabiva.get_int("S7"); const int colonna = tabiva.get_int("S7");
if ((colonna == 1)||(colonna == 3)) if ((colonna == 1)||(colonna == 3))
_totimposta += imposta; _totimposta += imposta;
if (colonna == 1) if (colonna == 1)
_totimponibile += imponibile; _totimponibile += imponibile;
else else
if (colonna == 3) {
if (colonna == 3)
_op_esenti += imponibile; _op_esenti += imponibile;
else
{
TString msg; msg << TR("Codice IVA senza colonna allegato clienti '") << codiva << "' considerata non imponibile.";
xvtil_statbar_set(msg);
_op_non_imp += imponibile; // 14-02-2013 Il default è ora questo (Sile)
}
}
} }
else else
{ {
@ -1924,7 +1930,8 @@ void TListaMov_application::incrementa_totali()
case 3: _op_esenti += imponibile; break; case 3: _op_esenti += imponibile; break;
case 4: _op_non_imp += imponibile; break; case 4: _op_non_imp += imponibile; break;
default: default:
TString msg; msg << TR("Codice IVA senza colonna allegato fornitori '") << codiva << "'"; _op_non_imp += imponibile; // 14-02-2013 Il default è ora questo (Sile)
TString msg; msg << TR("Codice IVA senza colonna allegato fornitori '") << codiva << "' considerata non imponibile.";
xvtil_statbar_set(msg); xvtil_statbar_set(msg);
break; break;
} }

View File

@ -942,9 +942,3 @@ int cg3500 (int argc, char* argv[])
a.run(argc, argv, TR("Stampa riepilogo gruppi/conti")); a.run(argc, argv, TR("Stampa riepilogo gruppi/conti"));
return 0; return 0;
} }

View File

@ -133,7 +133,7 @@ bool TLiquidazione_app::user_create()
_att_r = &(_nditte->curr(LF_ATTIV)); _att_r = &(_nditte->curr(LF_ATTIV));
_ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"), _ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"),
HR("@1|Cod.@5R|Ragione Sociale@50|Vers.|Agr.Min")); HR("@1|Codice@R|Ragione Sociale@50|Vers.|Agr.Min"));
_n_ditte = 0l; _n_ditte = 0l;
// Caro tab11, ricordati che un giorno sarai un file unico! // Caro tab11, ricordati che un giorno sarai un file unico!

View File

@ -624,6 +624,8 @@ public:
bool look_iva(const char* cod); bool look_iva(const char* cod);
bool look_reg(const char* reg); bool look_reg(const char* reg);
bool look_lia(long ditta = 0l, bool create = FALSE, int anno = 0); bool look_lia(long ditta = 0l, bool create = FALSE, int anno = 0);
int count_activities() const;
// trova il mytical ufficio concessione da mettere nelle deleghe // trova il mytical ufficio concessione da mettere nelle deleghe
bool look_conc(TString& uffcon, TString& uffiva); bool look_conc(TString& uffcon, TString& uffiva);

View File

@ -179,6 +179,8 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
_isintr = _freqviva == "T" && !_lia->get_bool("B3"); // was CNF_DITTA->InTrtr _isintr = _freqviva == "T" && !_lia->get_bool("B3"); // was CNF_DITTA->InTrtr
_gest4 = _isbenzinaro && _lia->get_bool("B4"); // was CNF_DITTA->Gest74 _gest4 = _isbenzinaro && _lia->get_bool("B4"); // was CNF_DITTA->Gest74
const bool has_single_activity = count_activities() == 1;
// controlla che il periodo corrente non sia l'inizio dell'attivita' // controlla che il periodo corrente non sia l'inizio dell'attivita'
// nel caso, differita va a FALSE // nel caso, differita va a FALSE
_monthinatt = 1; _monthinatt = 1;
@ -248,7 +250,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
TString8 cattiv(codatt); TString8 cattiv(codatt);
cattiv << tipoatt; cattiv << tipoatt;
const bool waspla = look_pla(cattiv, false); const bool waspla = look_pla(cattiv, has_single_activity);
if (!waspla) if (!waspla)
break; // Non calcolare attività inesistenti 29-11-2012 break; // Non calcolare attività inesistenti 29-11-2012
@ -979,7 +981,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
const bool cau_intra = rcs.get_bool("INTRACOM"); const bool cau_intra = rcs.get_bool("INTRACOM");
const bool cau_valintra = rcs.get_bool("VALINTRA"); const bool cau_valintra = rcs.get_bool("VALINTRA");
if (_mov->get_long(MOV_NUMREG) == 63630) if (_mov->get_long(MOV_NUMREG) == 10146)
int cazzone = 1; int cazzone = 1;
// Inizio gestione IVA differita // Inizio gestione IVA differita
@ -1367,8 +1369,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// per la dichiarazione annuale fati iva // per la dichiarazione annuale fati iva
if (month == 13 && !fattrit) if (month == 13 && !fattrit)
{ {
const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
if (tipomov == vendita) if (tipomov == vendita)
{ {
const long codcf = _mov->get_long(MOV_CODCF); const long codcf = _mov->get_long(MOV_CODCF);
@ -1405,16 +1405,25 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
} }
} }
if (iva_vpn.not_empty()) const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
if (iva_vpn.full())
{ {
switch (tipomov) switch (tipomov)
{ {
case vendita: // CD1 - 1 2 3 4 case vendita: // CD1 - 1 2 3 4
{ {
if (!corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) && // bool is_valid = !corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
sosp_imp != normale && sosp_imp != liquidazione) // sosp_imp != normale && sosp_imp != liquidazione;
bool is_valid = tipodoc != "AF" && sosp_imp != normale && sosp_imp != liquidazione;
if (is_valid)
{ {
cessioni_cd1_1 += imponibile; if (movdiff) // 21-02-2013 Comprendere IVA differita registrata nell'anno! (imponibile=0)
{
if (date.year() == year_int)
cessioni_cd1_1 += imponibile_orig;
}
else
cessioni_cd1_1 += imponibile;
if (iva_vpn.starts_with("CD1")) if (iva_vpn.starts_with("CD1"))
{ {
if (tipocr == 4) if (tipocr == 4)

View File

@ -512,6 +512,15 @@ bool TLiquidazione_app::look_lam(int m, bool create)
return ok; return ok;
} }
int TLiquidazione_app::count_activities() const
{
TRelation rel(LF_ATTIV);
TRectype& rec = rel.curr();
rec.put("CODDITTA", get_firm());
TCursor cur(&rel, "", 1, &rec, &rec);
return cur.items();
}
bool TLiquidazione_app::look_pla(const char* a, bool create) bool TLiquidazione_app::look_pla(const char* a, bool create)
{ {
// forza il tipoatt a 1 // forza il tipoatt a 1
@ -519,8 +528,8 @@ bool TLiquidazione_app::look_pla(const char* a, bool create)
buf.ltrim(); buf.ltrim();
buf.rtrim(1); buf.rtrim(1);
buf << "1"; buf << "1";
while (buf.len() < 6) //while (buf.len() < 6) buf.insert("0");
buf.insert("0"); buf.right_just(6, '0');
_pla_r->zero(); _pla_r->zero();
(*_pla_ditta) = format("%05ld", get_firm()); (*_pla_ditta) = format("%05ld", get_firm());

View File

@ -2608,8 +2608,7 @@ print_action TStampa_registri_app::postprocess_page (int file, int counter)
print_IVAxCassa(da_mese, a_mese); print_IVAxCassa(da_mese, a_mese);
da_mese = 0; // vieta ristampa! da_mese = 0; // vieta ristampa!
} }
else _riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
_riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
} }
if (_liquidazione) if (_liquidazione)
@ -3381,6 +3380,7 @@ void TStampa_registri_app::no_movimenti()
printer().open(); printer().open();
print_IVAxCassa(da, a); print_IVAxCassa(da, a);
} }
_riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
if (_tipo_reg == riepilogativo || _liquidazione || _stampa_plafonds) if (_tipo_reg == riepilogativo || _liquidazione || _stampa_plafonds)
{ {

View File

@ -14,7 +14,7 @@ int main(int argc,char** argv)
case 4: cg5400(argc,argv); break; // Ripristino stampe case 4: cg5400(argc,argv); break; // Ripristino stampe
case 5: cg5500(argc,argv); break; // Visualizzazione Liquidazione case 5: cg5500(argc,argv); break; // Visualizzazione Liquidazione
case 6: cg5600(argc,argv); break; // Ripristino liquidazione case 6: cg5600(argc,argv); break; // Ripristino liquidazione
case 7: cg5700(argc,argv); break; // Dichiarazione periodica case 7: cg5700(argc,argv); break; // Comunicazione annuale dati IVA
case 8: cg5800(argc,argv); break; // Quadro VT case 8: cg5800(argc,argv); break; // Quadro VT
default: cg5000(argc,argv); break; // Parametri Studio default: cg5000(argc,argv); break; // Parametri Studio
} }

View File

@ -45,7 +45,6 @@ protected: // Relapp
virtual bool protected_record(TRectype&) { return TRUE; } virtual bool protected_record(TRectype&) { return TRUE; }
virtual void init_query_mode(TMask&); virtual void init_query_mode(TMask&);
virtual void init_insert_mode(TMask& m); virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
// non si possono aggiungere record, se non ci sono vengono // non si possono aggiungere record, se non ci sono vengono
// creati automaticamente // creati automaticamente
@ -268,20 +267,15 @@ void TParaliq_app::init_array(TMask& m, bool update)
{ {
TToken_string& tt = sf.row(i); TToken_string& tt = sf.row(i);
// istanzia array _atts on le attivita' della ditta corrente // istanzia array _atts on le attività della ditta corrente
tt.cut(0); tt = r.get(ATT_CODATT);
tt.add(r.get(ATT_CODATT));
tt.add(r.get(ATT_TIPOATT)); tt.add(r.get(ATT_TIPOATT));
tt.add("");
tt.add("");
tt.add("");
tt.add("");
} }
if (update) if (update)
{ {
sf.force_update(); sf.force_update();
TString16 freq = cache().get(LF_NDITTE,newditta).get(NDT_FREQVIVA); const TString& freq = cache().get(LF_NDITTE,newditta,NDT_FREQVIVA);
m.set(F_FREQ_VERS, freq); m.set(F_FREQ_VERS, freq);
} }
} }
@ -333,31 +327,9 @@ void TParaliq_app::init_insert_mode(TMask& m)
{ {
// Inizializza array delle attivita' // Inizializza array delle attivita'
init_array(m, TRUE); init_array(m, TRUE);
init_modify_mode(m); m.set(F_ROUNDLIQ, TCurrency::get_firm_dec());
if (m.get_int(F_YEAR) >= 2002)
m.set(F_ROUNDLIQ, TCurrency::get_firm_dec());
} }
void TParaliq_app::init_modify_mode(TMask& m)
{
const int anno_liq = m.get_int(F_YEAR);
if (anno_liq >= 2000)
{
m.enable(F_UTCR_IVA);
}
else
{
m.set(F_UTCR_IVA, " ", TRUE);
m.disable(F_UTCR_IVA);
}
// Attiva la pagina degli arrotondamenti solo per le ditte in Euro dal 2002
m.enable_page(1, (anno_liq >= 2002) && (TCurrency::get_firm_dec() > 0));
}
int TParaliq_app::rewrite(const TMask& m) int TParaliq_app::rewrite(const TMask& m)
{ {
// scrive %LIA // scrive %LIA

View File

@ -219,7 +219,7 @@ PAGE "" -1 -1 65 16
STRING F_CODATT 5 STRING F_CODATT 5
BEGIN BEGIN
PROMPT 4 1 "Codice Attivita' " PROMPT 4 1 "Codice Attività "
FLAGS "DUZ" FLAGS "DUZ"
USE %AIS USE %AIS
INPUT CODTAB F_CODATT INPUT CODTAB F_CODATT
@ -279,6 +279,9 @@ BEGIN
GROUP 1 GROUP 1
END END
ENDPAGE
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_OK 9 2 BUTTON DLG_OK 9 2
BEGIN BEGIN

View File

@ -5,10 +5,12 @@
#include <form.h> #include <form.h>
#include <prefix.h> #include <prefix.h>
#include <recarray.h> #include <recarray.h>
#include <recset.h>
#include <sheet.h> #include <sheet.h>
#include <tabutil.h> #include <tabutil.h>
#include <nditte.h> #include <nditte.h>
#include <rmoviva.h>
#include "cg5700.h" #include "cg5700.h"
#include "cglib03.h" #include "cglib03.h"
@ -21,7 +23,6 @@ class TDich_periodica_selfirm_mask : public TAutomask
protected: protected:
bool select_button(); bool select_button();
void build_nomiditte();
void build_ditte_sheet(); void build_ditte_sheet();
public: public:
@ -33,13 +34,11 @@ public:
TDich_periodica_selfirm_mask::TDich_periodica_selfirm_mask() : TAutomask("cg5700a") TDich_periodica_selfirm_mask::TDich_periodica_selfirm_mask() : TAutomask("cg5700a")
{ {
_ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"), _ditte = new TArray_sheet(-1, -1, 70, 15, TR("Selezione Ditte"),
HR("Cod.@5|Ragione Sociale@50")); HR("Codice@6R|Ragione Sociale@50"));
TDate oggi(TODAY); TDate oggi(TODAY);
_year = oggi.year(); _year = oggi.year();
build_nomiditte();
build_ditte_sheet(); build_ditte_sheet();
} }
@ -48,46 +47,45 @@ TDich_periodica_selfirm_mask::~TDich_periodica_selfirm_mask()
delete _ditte; delete _ditte;
} }
void TDich_periodica_selfirm_mask::build_nomiditte()
{
TString cod;
TRelation relditte(LF_NDITTE);
TRectype & ditta = relditte.lfile().curr();
TCursor cur(&relditte);
const TRecnotype items = cur.items();
cur.freeze();
_nomiditte.destroy();
for (cur = 0L; cur.pos() < items; ++cur)
{
const long codditta = ditta.get_long("CODDITTA");
bool good = prefix().exist(codditta);
if (good)
{
TToken_string* d = new TToken_string(64);
d->add(codditta);
d->add(ditta.get("RAGSOC"));
_nomiditte.add(d);
}
}
}
void TDich_periodica_selfirm_mask::build_ditte_sheet() void TDich_periodica_selfirm_mask::build_ditte_sheet()
{ {
TTable pum("PUM");
_ditte->destroy(); _ditte->destroy();
long prima = -1; TPointer_array firms;
TPrefix::firms(firms);
for (int i = 0; i < _nomiditte.items(); i++)
long good_company = -1;
FOR_EACH_ARRAY_ITEM(firms, i, obj)
{ {
TToken_string* d = new TToken_string(_nomiditte.row(i)); TToken_string* d = new TToken_string(63);
const long pos = _ditte->add(d); const long codditta = firms.get_long(i);
const char vers = d->get_char(2); d->add(codditta);
const bool selectable = vers != '?'; d->add(cache().get(LF_NDITTE, codditta, NDT_RAGSOC));
_ditte->enable_row(pos, selectable); const long pos = _ditte->add(d);
if (selectable && prima < 0)
_ditte->select(prima = pos); pum.put("CODTAB", _year);
} if (pum.read(_isgteq) == NOERR && atoi(pum.get("CODTAB").left(4)) == _year)
{
if (good_company <= 0)
good_company = pos;
}
else
_ditte->disable_row(pos);
}
if (good_company >= 0)
{
TToken_string& row = _ditte->row(good_company);
set(F_CODDITTA, row.get(0));
set(F_RAGSOC, row.get(1));
}
else
{
reset(F_CODDITTA);
reset(F_RAGSOC);
}
} }
bool TDich_periodica_selfirm_mask::select_button() bool TDich_periodica_selfirm_mask::select_button()
@ -97,9 +95,9 @@ bool TDich_periodica_selfirm_mask::select_button()
TToken_string& row = _ditte->row(_ditte->selected()); TToken_string& row = _ditte->row(_ditte->selected());
set(F_CODDITTA, row.get(0)); set(F_CODDITTA, row.get(0));
set(F_RAGSOC, row.get(1)); set(F_RAGSOC, row.get(1));
return TRUE; return true;
} }
return FALSE; return false;
} }
bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
@ -112,24 +110,18 @@ bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_eve
if (e == fe_modify) if (e == fe_modify)
{ {
bool found = FALSE; bool found = false;
TString16 ditta = o.get(); const long ditta = atol(o.get());
for (int i = 0; i < _ditte->items(); i++) for (long i = 0; i < _ditte->items(); i++)
{ {
TToken_string& row = _ditte->row(i); TToken_string& row = _ditte->row(i);
if (ditta == row.get(0)) if (ditta == row.get_long(0))
{ {
if (_ditte->row_enabled(i)) if (_ditte->row_enabled(i))
{ {
set(F_CODDITTA, row.get(0)); set(F_CODDITTA, row.get(0));
set(F_RAGSOC, row.get(1)); set(F_RAGSOC, row.get(1));
found = TRUE; found = true;
}
else
{
warning_box(FR("Non sono definiti i parametri liquidazione per la ditta %ld"),
atol(ditta));
o.reset();
} }
break; break;
} }
@ -169,10 +161,7 @@ bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_eve
if (e == fe_modify) if (e == fe_modify)
{ {
_year = atoi(o.get()); _year = atoi(o.get());
build_nomiditte();
build_ditte_sheet(); build_ditte_sheet();
set(F_CODDITTA, "");
set(F_RAGSOC, "");
} }
break; break;
default: default:
@ -243,6 +232,7 @@ class TDich_periodica_iva_mask : public TAutomask
_is_euro; // importi in euro _is_euro; // importi in euro
protected: protected:
void read_iva_data(); void read_iva_data();
real imposta_diff() const;
public: public:
void set_prospect(); void set_prospect();
@ -250,7 +240,6 @@ public:
virtual bool on_key(KEY k); virtual bool on_key(KEY k);
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);
TDich_periodica_iva_mask(TDich_periodica_selfirm_mask *m); TDich_periodica_iva_mask(TDich_periodica_selfirm_mask *m);
virtual ~TDich_periodica_iva_mask() {};
}; };
TDich_periodica_iva_mask::TDich_periodica_iva_mask(TDich_periodica_selfirm_mask *m) TDich_periodica_iva_mask::TDich_periodica_iva_mask(TDich_periodica_selfirm_mask *m)
@ -272,6 +261,27 @@ TDich_periodica_iva_mask::TDich_periodica_iva_mask(TDich_periodica_selfirm_mask
} }
} }
real TDich_periodica_iva_mask::imposta_diff() const
{
real imposta;
const int anno = _sf->get_year();
const TDate data_da(1,1,anno);
const TDate data_a(31,12,anno);
TString query;
query = "USE IVADIFF SELECT (BETWEEN(DATAREGP,#DAL,#AL))&&(TIPOMOV>2)&&(STR(MOV.TOTDOC>0))";
query << "\nBY DATAREGP DATAREG";
query << "\nJOIN MOV INTO NUMREG==NUMREG";
TISAM_recordset id(query);
id.set_var("#DAL", data_da);
id.set_var("#AL", data_a);
for (bool ok = id.move_first(); ok; ok = id.move_next())
imposta += id.get(RMI_IMPOSTA).as_real();
return imposta;
}
void TDich_periodica_iva_mask::read_iva_data() void TDich_periodica_iva_mask::read_iva_data()
{ {
@ -303,8 +313,8 @@ void TDich_periodica_iva_mask::read_iva_data()
real cd2_5 = ZERO; real cd2_5 = ZERO;
real cd3_1 = ZERO; real cd3_1 = ZERO;
real cd3_2 = ZERO; real cd3_2 = ZERO;
real cd3_3 = ZERO; real cd3_3 = ZERO;
real cd3_4 = ZERO; real cd3_4 = ZERO;
TRelation relpum("PUM"); TRelation relpum("PUM");
TRectype & pum = relpum.curr(); TRectype & pum = relpum.curr();
@ -318,7 +328,7 @@ void TDich_periodica_iva_mask::read_iva_data()
cur.freeze(); cur.freeze();
for (cur = 0L; cur.pos() < items; ++cur) for (cur = 0L; cur.pos() < items; ++cur)
{ {
const TString & codtab = pum.get("CODTAB"); const TString& codtab = pum.get("CODTAB");
const TString& annoiva = codtab.left(4); const TString& annoiva = codtab.left(4);
if (annoiva != key) if (annoiva != key)
@ -350,7 +360,7 @@ void TDich_periodica_iva_mask::read_iva_data()
const real rettifica = lim.get_real("R5"); // Rettifiche const real rettifica = lim.get_real("R5"); // Rettifiche
real cd4 = lam.get_real("R0"); // Iva esigibile per il periodo real cd4 = lam.get_real("R0"); // Iva esigibile per il periodo
cd4 += imposta_diff();
if (rettifica > ZERO) if (rettifica > ZERO)
cd4 += rettifica; cd4 += rettifica;
cd4.round(); cd4.round();

View File

@ -28,26 +28,6 @@ BEGIN
PROMPT 2 1 "@bAGENZIA DELLE ENTRATE" PROMPT 2 1 "@bAGENZIA DELLE ENTRATE"
END END
STRINGA -1
BEGIN
PROMPT 2 2 "[]\ //\ "
END
STRINGA -1
BEGIN
PROMPT 2 3 "[]\\ // \\"
END
STRINGA -1
BEGIN
PROMPT 2 4 "[] \\//___\\"
END
STRINGA -1
BEGIN
PROMPT 2 5 "[] \/-----\\"
END
STRINGA -1 STRINGA -1
BEGIN BEGIN
PROMPT 2 6 "@bCOMUNICAZIONE" PROMPT 2 6 "@bCOMUNICAZIONE"
@ -175,7 +155,7 @@ END
STRINGA -1 STRINGA -1
BEGIN BEGIN
KEY "CD12_5 - Descrizione" KEY "CD12_5 - Descrizione"
PROMPT 6 22 "di cui: acquisti beni strumentali" PROMPT 6 22 "di cui cessioni beni strumentali"
END END
VALUTA FF_CD1_5 18 VALUTA FF_CD1_5 18
@ -245,7 +225,7 @@ END
STRINGA -1 STRINGA -1
BEGIN BEGIN
KEY "CD2_5 - Descrizione" KEY "CD2_5 - Descrizione"
PROMPT 6 29 "di cui: acquisti beni strumentali" PROMPT 6 29 "di cui acquisti beni strumentali"
END END
VALUTA FF_CD2_5 18 VALUTA FF_CD2_5 18

View File

@ -1,22 +1,22 @@
#include "cg5700.h" #include "cg5700.h"
PAGE "Comunicazione Annuale dati IVA" -1 -1 72 8 PAGE "Comunicazione Annuale dati IVA" -1 -1 60 8
NUMBER F_YEAR 4 NUMBER F_YEAR 4
BEGIN BEGIN
PROMPT 1 1 "Anno liquidazione " PROMPT 1 1 "Anno "
FLAGS "AR" FLAGS "A"
END END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 1 3 "Codice ditta " PROMPT 1 2 "Ditta "
FLAGS "B" FLAGS "B"
END END
STRING F_RAGSOC 50 30 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 28 3 "Rag.soc. " PROMPT 7 3 ""
FLAGS "B" FLAGS "B"
END END
@ -31,4 +31,5 @@ BEGIN
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -8,11 +8,7 @@ BEGIN
MESSAGE EXIT, K_ENTER MESSAGE EXIT, K_ENTER
END END
BUTTON DLG_QUIT 10 2 #include <helpbar.h>
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE ENDPAGE
PAGE "Comunicazione annuale dati IVA" 0 0 0 2 PAGE "Comunicazione annuale dati IVA" 0 0 0 2
@ -66,7 +62,7 @@ END
CURRENCY F_CD1_5 18 CURRENCY F_CD1_5 18
BEGIN BEGIN
PROMPT 1 8 " di cui: cess. beni strument. " PROMPT 1 8 "di cui: cess. beni strumentali "
FLAGS "D" FLAGS "D"
END END
@ -96,7 +92,7 @@ END
CURRENCY F_CD2_5 18 CURRENCY F_CD2_5 18
BEGIN BEGIN
PROMPT 1 13 " di cui: acq. beni strument. " PROMPT 1 13 "di cui: acq. beni strumentali "
FLAGS "D" FLAGS "D"
END END

View File

@ -2,6 +2,7 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <form.h> #include <form.h>
#include <recarray.h>
#include <reprint.h> #include <reprint.h>
#include <nditte.h> #include <nditte.h>
@ -12,12 +13,10 @@
class TQuadro_VT_selfirm_mask : public TAutomask class TQuadro_VT_selfirm_mask : public TAutomask
{ {
TArray_sheet * _ditte; TArray_sheet * _ditte;
TString_array _nomiditte;
int _year; int _year;
protected: protected:
bool select_button(); bool select_button();
void build_nomiditte();
void build_ditte_sheet(); void build_ditte_sheet();
public: public:
@ -33,7 +32,6 @@ TQuadro_VT_selfirm_mask::TQuadro_VT_selfirm_mask() : TAutomask("cg5800a")
const TDate oggi(TODAY); const TDate oggi(TODAY);
_year = oggi.year(); _year = oggi.year();
build_nomiditte();
build_ditte_sheet(); build_ditte_sheet();
} }
@ -42,45 +40,46 @@ TQuadro_VT_selfirm_mask::~TQuadro_VT_selfirm_mask()
delete _ditte; delete _ditte;
} }
void TQuadro_VT_selfirm_mask::build_nomiditte()
{
TRelation relditte(LF_NDITTE);
TRectype & ditta = relditte.lfile().curr();
TCursor cur(&relditte);
const TRecnotype items = cur.items();
cur.freeze();
_nomiditte.destroy();
for (cur = 0L; cur.pos() < items; ++cur)
{
const long codditta = ditta.get_long("CODDITTA");
bool good = prefix().exist(codditta);
if (good)
{
TToken_string* d = new TToken_string(64);
d->add(codditta);
d->add(ditta.get("RAGSOC"));
_nomiditte.add(d);
}
}
}
void TQuadro_VT_selfirm_mask::build_ditte_sheet() void TQuadro_VT_selfirm_mask::build_ditte_sheet()
{ {
TTable pum("PUM");
_ditte->destroy(); _ditte->destroy();
long prima = -1; TPointer_array firms;
TPrefix::firms(firms);
for (int i = 0; i < _nomiditte.items(); i++)
long good_company = -1;
FOR_EACH_ARRAY_ITEM(firms, i, obj)
{ {
TToken_string* d = new TToken_string(_nomiditte.row(i)); TToken_string* d = new TToken_string(63);
const long pos = _ditte->add(d); const long codditta = firms.get_long(i);
const char vers = d->get_char(2); d->add(codditta);
const bool selectable = vers != '?'; d->add(cache().get(LF_NDITTE, codditta, NDT_RAGSOC));
_ditte->enable_row(pos, selectable); const long pos = _ditte->add(d);
if (selectable && prima < 0)
_ditte->select(prima = pos); pum.put("CODTAB", _year);
} if (pum.read(_isgteq) == NOERR && atoi(pum.get("CODTAB").left(4)) == _year)
{
if (good_company <= 0)
good_company = pos;
}
else
_ditte->disable_row(pos);
}
if (good_company >= 0)
{
TToken_string& row = _ditte->row(good_company);
set(F_CODDITTA, row.get(0));
set(F_RAGSOC, row.get(1));
}
else
{
reset(F_CODDITTA);
reset(F_RAGSOC);
}
} }
bool TQuadro_VT_selfirm_mask::select_button() bool TQuadro_VT_selfirm_mask::select_button()
@ -162,7 +161,6 @@ bool TQuadro_VT_selfirm_mask::on_field_event(TOperable_field& o, TField_event e,
if (e == fe_modify) if (e == fe_modify)
{ {
_year = atoi(o.get()); _year = atoi(o.get());
build_nomiditte();
build_ditte_sheet(); build_ditte_sheet();
set(F_CODDITTA, ""); set(F_CODDITTA, "");
set(F_RAGSOC, ""); set(F_RAGSOC, "");

View File

@ -1,22 +1,22 @@
#include "cg5700.h" #include "cg5800.h"
PAGE "Quadro VT" -1 -1 72 8 PAGE "Quadro VT" -1 -1 72 8
NUMBER F_YEAR 4 NUMBER F_YEAR 4
BEGIN BEGIN
PROMPT 1 1 "Anno liquidazione " PROMPT 1 1 "Anno "
FLAGS "AR" FLAGS "A"
END END
NUMBER F_CODDITTA 5 NUMBER F_CODDITTA 5
BEGIN BEGIN
PROMPT 1 3 "Codice ditta " PROMPT 1 2 "Ditta "
FLAGS "B" FLAGS "B"
END END
STRING F_RAGSOC 50 30 STRING F_RAGSOC 50
BEGIN BEGIN
PROMPT 28 3 "Rag.soc. " PROMPT 7 3 ""
FLAGS "B" FLAGS "B"
END END
@ -31,4 +31,5 @@ BEGIN
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1156,7 +1156,7 @@ bool TBill::is_analitico() const
return false; return false;
} }
const char * num2str(const TString & s) const char* num2str(const TString & s)
{ {
TString & str = get_tmp_string(20); TString & str = get_tmp_string(20);

View File

@ -864,7 +864,19 @@ void TSaldo_agg::aggiorna(int gruppo, int conto, long sottoconto, const real& im
const TBill bill(gruppo, conto, sottoconto); const TBill bill(gruppo, conto, sottoconto);
const TImporto imp(sezione, importo); const TImporto imp(sezione, importo);
_tab_conti.aggiorna_conto(bill, _anno_es, imp, _movap, _tab_conti.aggiorna_conto(bill, _anno_es, imp, _movap,
_provv, somma, _movimentato, scaricato); _provv, somma, _movimentato, scaricato);
}
void TSaldo_agg::aggiorna(const TRectype& rmov, bool somma, bool scaricato)
{
const real imp = rmov.get(RMV_IMPORTO);
if (!imp.is_zero())
{
const char sez = rmov.get_char(RMV_SEZIONE);
const TImporto importo(sez, imp);
const TBill bill(rmov);
aggiorna(bill, importo, somma, scaricato);
}
} }
void TSaldo_agg::reset() void TSaldo_agg::reset()

View File

@ -179,6 +179,7 @@ public:
void aggiorna (const TBill& tc, const real& importo, char sezione, bool somma = true, bool scaricato = false) { aggiorna(tc.gruppo(), tc.conto(), tc.sottoconto(), importo, sezione, somma, scaricato);} void aggiorna (const TBill& tc, const real& importo, char sezione, bool somma = true, bool scaricato = false) { aggiorna(tc.gruppo(), tc.conto(), tc.sottoconto(), importo, sezione, somma, scaricato);}
void aggiorna (int gruppo, int conto, long sottoconto, void aggiorna (int gruppo, int conto, long sottoconto,
const real& importo, char sezione, bool somma = true, bool scaricato = false); const real& importo, char sezione, bool somma = true, bool scaricato = false);
void aggiorna (const TRectype& rmov, bool somma = true, bool scaricato = false);
TConto* find(const TBill& c, int anno) { return _tab_conti.find(c, anno); } TConto* find(const TBill& c, int anno) { return _tab_conti.find(c, anno); }