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)
{
TLocalisamfile clifo(LF_CLIFO);
int alleg;
int alleg = 0;
TLocalisamfile clifo(LF_CLIFO);
clifo.setkey(3);
clifo.zero();
clifo.put(CLI_GRUPPO, gruppo);
clifo.put(CLI_CONTO, conto);
clifo.put(CLI_CODCF, sottoconto);
clifo.read();
if (clifo.good())
alleg = clifo.curr().get_int(CLI_ALLEG);
else
alleg = 0;
if (clifo.read() == NOERR)
alleg = clifo.get_int(CLI_ALLEG);
return alleg;
}
const char * DescrConto (long gruppo, long conto, long sottoconto,
const char* tipocf)
const char* DescrConto (int gruppo, int conto, long sottoconto, char tipocf)
{
TString& tmp = get_tmp_string(50);
/*
TString16 key;
key << gruppo;
if (conto != 0)
@ -382,7 +378,7 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
if (tmp.empty())
{
key.format("%s|%ld",tipocf , sottoconto);
key.format("%c|%ld", tipocf , sottoconto);
const TRectype & clifo = cache().get(LF_CLIFO, key);
if (!clifo.empty())
@ -399,20 +395,22 @@ const char * DescrConto (long gruppo, long conto, long sottoconto,
tmp = clifo.get("RAGSOC");
}
}
*/
const TBill bill(gruppo, conto, sottoconto, tipocf);
tmp = bill.descrizione();
return tmp;
}
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);
return allegb;
}
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);
}
@ -582,7 +580,6 @@ void TListaMov_application::stampa_errori_rmov()
char tipoc = rec.get_char(RMV_TIPOCC);
bool g = FALSE;
char t;
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"));
else
{
t = pc.get_char(PCN_TMCF);
const char t = pc.get_char(PCN_TMCF);
if (t != tipo)
set_row(_nr++, FR("@11gIl tipo C/F indicato non corrisponde a quello presente su Piano dei Conti"));
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,"@8g%-.20s", (const char*) _descr_causale);
_causale_gia_stampata = TRUE;
_causale_gia_stampata = true;
}
const TRectype& currig = cur->curr(LF_RMOV);
int gruppo = currig.get_int(RMV_GRUPPO);
int conto = currig.get_int(RMV_CONTO);
long sottoconto = currig.get_long(RMV_SOTTOCONTO);
const TString4 tipoc = currig.get(RMV_TIPOC);
const int gruppo = currig.get_int(RMV_GRUPPO);
const int conto = currig.get_int(RMV_CONTO);
const long sottoconto = currig.get_long(RMV_SOTTOCONTO);
const char tipoc = currig.get_char(RMV_TIPOC);
_descr = DescrConto(gruppo, conto, sottoconto, tipoc);
_alleg = AllegClifo(gruppo, conto, sottoconto);
_importo = currig.get_real(RMV_IMPORTO);
@ -1008,10 +1005,10 @@ bool TListaMov_application::preprocess_page(int file,int counter)
_causale_gia_stampata = TRUE;
}
const TRectype& rmov = current_cursor()->curr(LF_RMOV);
int gruppo = rmov.get_int(RMV_GRUPPO);
int conto = rmov.get_int(RMV_CONTO);
long sottoconto = rmov.get_long(RMV_SOTTOCONTO);
const TString4 tipoc = rmov.get(RMV_TIPOC);
const int gruppo = rmov.get_int(RMV_GRUPPO);
const int conto = rmov.get_int(RMV_CONTO);
const long sottoconto = rmov.get_long(RMV_SOTTOCONTO);
const char tipoc = rmov.get_char(RMV_TIPOC);
_descr = DescrConto(gruppo, conto, sottoconto, tipoc);
_importo = rmov.get_real(RMV_IMPORTO);
_appoggio = toupper(rmov.get_char(RMV_SEZIONE));
@ -1907,11 +1904,20 @@ void TListaMov_application::incrementa_totali()
const int colonna = tabiva.get_int("S7");
if ((colonna == 1)||(colonna == 3))
_totimposta += imposta;
if (colonna == 1)
_totimponibile += imponibile;
else
{
if (colonna == 3)
_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
{
@ -1924,7 +1930,8 @@ void TListaMov_application::incrementa_totali()
case 3: _op_esenti += imponibile; break;
case 4: _op_non_imp += imponibile; break;
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);
break;
}

View File

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

View File

@ -133,7 +133,7 @@ bool TLiquidazione_app::user_create()
_att_r = &(_nditte->curr(LF_ATTIV));
_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;
// Caro tab11, ricordati che un giorno sarai un file unico!

View File

@ -625,6 +625,8 @@ public:
bool look_reg(const char* reg);
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
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
_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'
// nel caso, differita va a FALSE
_monthinatt = 1;
@ -248,7 +250,7 @@ bool TLiquidazione_app::update_firm(int month, bool recalc)
TString8 cattiv(codatt);
cattiv << tipoatt;
const bool waspla = look_pla(cattiv, false);
const bool waspla = look_pla(cattiv, has_single_activity);
if (!waspla)
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_valintra = rcs.get_bool("VALINTRA");
if (_mov->get_long(MOV_NUMREG) == 63630)
if (_mov->get_long(MOV_NUMREG) == 10146)
int cazzone = 1;
// Inizio gestione IVA differita
@ -1367,8 +1369,6 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
// per la dichiarazione annuale fati iva
if (month == 13 && !fattrit)
{
const TString& iva_vpn = _iva->get(tipomov == vendita ? "S10" : "S11");
if (tipomov == vendita)
{
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)
{
case vendita: // CD1 - 1 2 3 4
{
if (!corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
sosp_imp != normale && sosp_imp != liquidazione)
// bool is_valid = !corrisp && tipodoc != "AF" && (cau_intra || !cau_valintra) &&
// 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 (tipocr == 4)

View File

@ -512,6 +512,15 @@ bool TLiquidazione_app::look_lam(int m, bool create)
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)
{
// forza il tipoatt a 1
@ -519,8 +528,8 @@ bool TLiquidazione_app::look_pla(const char* a, bool create)
buf.ltrim();
buf.rtrim(1);
buf << "1";
while (buf.len() < 6)
buf.insert("0");
//while (buf.len() < 6) buf.insert("0");
buf.right_just(6, '0');
_pla_r->zero();
(*_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);
da_mese = 0; // vieta ristampa!
}
else
_riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
_riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
}
if (_liquidazione)
@ -3381,6 +3380,7 @@ void TStampa_registri_app::no_movimenti()
printer().open();
print_IVAxCassa(da, a);
}
_riga_prospettoXcassa.destroy(); // Elimina comunque tracking movimenti
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 5: cg5500(argc,argv); break; // Visualizzazione 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
default: cg5000(argc,argv); break; // Parametri Studio
}

View File

@ -45,7 +45,6 @@ protected: // Relapp
virtual bool protected_record(TRectype&) { return TRUE; }
virtual void init_query_mode(TMask&);
virtual void init_insert_mode(TMask& m);
virtual void init_modify_mode(TMask& m);
virtual int rewrite(const TMask& m);
// non si possono aggiungere record, se non ci sono vengono
// creati automaticamente
@ -268,20 +267,15 @@ void TParaliq_app::init_array(TMask& m, bool update)
{
TToken_string& tt = sf.row(i);
// istanzia array _atts on le attivita' della ditta corrente
tt.cut(0);
tt.add(r.get(ATT_CODATT));
// istanzia array _atts on le attività della ditta corrente
tt = r.get(ATT_CODATT);
tt.add(r.get(ATT_TIPOATT));
tt.add("");
tt.add("");
tt.add("");
tt.add("");
}
if (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);
}
}
@ -333,31 +327,9 @@ void TParaliq_app::init_insert_mode(TMask& m)
{
// Inizializza array delle attivita'
init_array(m, TRUE);
init_modify_mode(m);
if (m.get_int(F_YEAR) >= 2002)
m.set(F_ROUNDLIQ, TCurrency::get_firm_dec());
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)
{
// scrive %LIA

View File

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

View File

@ -5,10 +5,12 @@
#include <form.h>
#include <prefix.h>
#include <recarray.h>
#include <recset.h>
#include <sheet.h>
#include <tabutil.h>
#include <nditte.h>
#include <rmoviva.h>
#include "cg5700.h"
#include "cglib03.h"
@ -21,7 +23,6 @@ class TDich_periodica_selfirm_mask : public TAutomask
protected:
bool select_button();
void build_nomiditte();
void build_ditte_sheet();
public:
@ -33,13 +34,11 @@ public:
TDich_periodica_selfirm_mask::TDich_periodica_selfirm_mask() : TAutomask("cg5700a")
{
_ditte = new TArray_sheet(-1, -1, -4, -4, TR("Selezione Ditte"),
HR("Cod.@5|Ragione Sociale@50"));
_ditte = new TArray_sheet(-1, -1, 70, 15, TR("Selezione Ditte"),
HR("Codice@6R|Ragione Sociale@50"));
TDate oggi(TODAY);
_year = oggi.year();
build_nomiditte();
build_ditte_sheet();
}
@ -48,45 +47,44 @@ TDich_periodica_selfirm_mask::~TDich_periodica_selfirm_mask()
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()
{
_ditte->destroy();
long prima = -1;
TTable pum("PUM");
for (int i = 0; i < _nomiditte.items(); i++)
_ditte->destroy();
TPointer_array firms;
TPrefix::firms(firms);
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 codditta = firms.get_long(i);
d->add(codditta);
d->add(cache().get(LF_NDITTE, codditta, NDT_RAGSOC));
const long pos = _ditte->add(d);
const char vers = d->get_char(2);
const bool selectable = vers != '?';
_ditte->enable_row(pos, selectable);
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);
}
}
@ -97,9 +95,9 @@ bool TDich_periodica_selfirm_mask::select_button()
TToken_string& row = _ditte->row(_ditte->selected());
set(F_CODDITTA, row.get(0));
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)
@ -112,24 +110,18 @@ bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_eve
if (e == fe_modify)
{
bool found = FALSE;
TString16 ditta = o.get();
for (int i = 0; i < _ditte->items(); i++)
bool found = false;
const long ditta = atol(o.get());
for (long i = 0; i < _ditte->items(); i++)
{
TToken_string& row = _ditte->row(i);
if (ditta == row.get(0))
if (ditta == row.get_long(0))
{
if (_ditte->row_enabled(i))
{
set(F_CODDITTA, row.get(0));
set(F_RAGSOC, row.get(1));
found = TRUE;
}
else
{
warning_box(FR("Non sono definiti i parametri liquidazione per la ditta %ld"),
atol(ditta));
o.reset();
found = true;
}
break;
}
@ -169,10 +161,7 @@ bool TDich_periodica_selfirm_mask::on_field_event(TOperable_field& o, TField_eve
if (e == fe_modify)
{
_year = atoi(o.get());
build_nomiditte();
build_ditte_sheet();
set(F_CODDITTA, "");
set(F_RAGSOC, "");
}
break;
default:
@ -243,6 +232,7 @@ class TDich_periodica_iva_mask : public TAutomask
_is_euro; // importi in euro
protected:
void read_iva_data();
real imposta_diff() const;
public:
void set_prospect();
@ -250,7 +240,6 @@ public:
virtual bool on_key(KEY k);
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
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)
@ -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()
{
@ -303,8 +313,8 @@ void TDich_periodica_iva_mask::read_iva_data()
real cd2_5 = ZERO;
real cd3_1 = ZERO;
real cd3_2 = ZERO;
real cd3_3 = ZERO;
real cd3_4 = ZERO;
real cd3_3 = ZERO;
real cd3_4 = ZERO;
TRelation relpum("PUM");
TRectype & pum = relpum.curr();
@ -318,7 +328,7 @@ void TDich_periodica_iva_mask::read_iva_data()
cur.freeze();
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);
if (annoiva != key)
@ -350,7 +360,7 @@ void TDich_periodica_iva_mask::read_iva_data()
const real rettifica = lim.get_real("R5"); // Rettifiche
real cd4 = lam.get_real("R0"); // Iva esigibile per il periodo
cd4 += imposta_diff();
if (rettifica > ZERO)
cd4 += rettifica;
cd4.round();

View File

@ -28,26 +28,6 @@ BEGIN
PROMPT 2 1 "@bAGENZIA DELLE ENTRATE"
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
BEGIN
PROMPT 2 6 "@bCOMUNICAZIONE"
@ -175,7 +155,7 @@ END
STRINGA -1
BEGIN
KEY "CD12_5 - Descrizione"
PROMPT 6 22 "di cui: acquisti beni strumentali"
PROMPT 6 22 "di cui cessioni beni strumentali"
END
VALUTA FF_CD1_5 18
@ -245,7 +225,7 @@ END
STRINGA -1
BEGIN
KEY "CD2_5 - Descrizione"
PROMPT 6 29 "di cui: acquisti beni strumentali"
PROMPT 6 29 "di cui acquisti beni strumentali"
END
VALUTA FF_CD2_5 18

View File

@ -1,22 +1,22 @@
#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
BEGIN
PROMPT 1 1 "Anno liquidazione "
FLAGS "AR"
PROMPT 1 1 "Anno "
FLAGS "A"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 1 3 "Codice ditta "
PROMPT 1 2 "Ditta "
FLAGS "B"
END
STRING F_RAGSOC 50 30
STRING F_RAGSOC 50
BEGIN
PROMPT 28 3 "Rag.soc. "
PROMPT 7 3 ""
FLAGS "B"
END
@ -31,4 +31,5 @@ BEGIN
END
ENDPAGE
ENDMASK

View File

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

View File

@ -2,6 +2,7 @@
#include <applicat.h>
#include <automask.h>
#include <form.h>
#include <recarray.h>
#include <reprint.h>
#include <nditte.h>
@ -12,12 +13,10 @@
class TQuadro_VT_selfirm_mask : public TAutomask
{
TArray_sheet * _ditte;
TString_array _nomiditte;
int _year;
protected:
bool select_button();
void build_nomiditte();
void build_ditte_sheet();
public:
@ -33,7 +32,6 @@ TQuadro_VT_selfirm_mask::TQuadro_VT_selfirm_mask() : TAutomask("cg5800a")
const TDate oggi(TODAY);
_year = oggi.year();
build_nomiditte();
build_ditte_sheet();
}
@ -42,45 +40,46 @@ TQuadro_VT_selfirm_mask::~TQuadro_VT_selfirm_mask()
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()
{
_ditte->destroy();
long prima = -1;
TTable pum("PUM");
for (int i = 0; i < _nomiditte.items(); i++)
_ditte->destroy();
TPointer_array firms;
TPrefix::firms(firms);
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 codditta = firms.get_long(i);
d->add(codditta);
d->add(cache().get(LF_NDITTE, codditta, NDT_RAGSOC));
const long pos = _ditte->add(d);
const char vers = d->get_char(2);
const bool selectable = vers != '?';
_ditte->enable_row(pos, selectable);
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()
@ -162,7 +161,6 @@ bool TQuadro_VT_selfirm_mask::on_field_event(TOperable_field& o, TField_event e,
if (e == fe_modify)
{
_year = atoi(o.get());
build_nomiditte();
build_ditte_sheet();
set(F_CODDITTA, "");
set(F_RAGSOC, "");

View File

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

View File

@ -1156,7 +1156,7 @@ bool TBill::is_analitico() const
return false;
}
const char * num2str(const TString & s)
const char* num2str(const TString & s)
{
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 TImporto imp(sezione, importo);
_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()

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 (int gruppo, int conto, long sottoconto,
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); }