Corretta gestione esercizi contabili

git-svn-id: svn://10.65.10.50/trunk@2170 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-11-18 11:09:06 +00:00
parent 0e625361e3
commit 30314e7e70
9 changed files with 80 additions and 81 deletions

View File

@ -1,7 +1,5 @@
#include <config.h>
#include <mailbox.h>
#include <tabutil.h>
#include <utility.h>
#include <urldefid.h>
#include <execp.h>
@ -402,9 +400,12 @@ TMask* TPrimanota_application::get_mask(int mode)
void TPrimanota_application::on_firm_change()
{
TRelation_application::on_firm_change();
TRelation_application::on_firm_change(); // May be useful, who knows?
_rel->lfile().last();
_lastreg = _rel->lfile().get_long(MOV_NUMREG); // Init last registration number
_esercizi.update(); // Init exercises
}
void TPrimanota_application::on_config_change()
@ -505,30 +506,30 @@ void TPrimanota_application::fill_sheet(TMask& m) const
// Certified 100%
const char* TPrimanota_application::get_next_key()
{
TToken_string k(80);
k.add(F_NUMREG); k.add(_lastreg+1);
_tmp.cut(0);
_tmp.add(F_NUMREG); _tmp.add(_lastreg+1);
if (_rel->good()) // Not reinsert
{
TMask& m = curr_mask();
if (m.insert_mode())
{
k.add(F_CODCAUS); k.add(m.get(F_CODCAUS)); // Ricopia causale
k.add(F_DATAREG); k.add(m.get(F_DATAREG)); // data operazione
k.add(F_DATACOMP); k.add(m.get(F_DATACOMP)); // competenza
_tmp.add(F_CODCAUS); _tmp.add(m.get(F_CODCAUS)); // Ricopia causale
_tmp.add(F_DATAREG); _tmp.add(m.get(F_DATAREG)); // data operazione
_tmp.add(F_DATACOMP); _tmp.add(m.get(F_DATACOMP)); // competenza
if (iva() == iva_vendite)
{
k.add(F_DATADOC); k.add(m.get(F_DATADOC)); // Ricopia data documento
_tmp.add(F_DATADOC); _tmp.add(m.get(F_DATADOC)); // Ricopia data documento
const long n = m.get_long(F_NUMDOC);
if (n > 0)
{ k.add(F_NUMDOC); k.add(n+1); } // incrementa numero documento
{ _tmp.add(F_NUMDOC); _tmp.add(n+1); } // incrementa numero documento
}
}
}
return strcpy(__tmp_string, k);
return _tmp;
}
@ -863,22 +864,27 @@ int TPrimanota_application::write(const TMask& m)
{
causale().reg().reread(); // Aggiorna protocollo IVA
if (is_saldaconto())
{
if (m.page_enabled(2))
write_scadenze(m);
}
else
{
if (!m.get_bool(F_SOLAIVA) && !is_saldaconto())
{
switch (causale().tipomov())
{
const TString16 causimm(causale().causale_inc_imm());
if (causimm.not_empty())
genera_incasso(causimm); // Genera incasso immediato
case 1:
write_scadenze(m); break; // Salva fattura
case 2:
salvaconto = TRUE; break; // Salva nota credito
default:
break;
}
}
else
{
// Genera incasso immediato se e' una fattura e non c'e' gestione saldaconto
if (!m.get_bool(F_SOLAIVA) && !gestione_saldaconto())
{
const TString causimm(causale().causale_inc_imm());
if (causimm.not_empty())
genera_incasso(causimm);
}
}
if (causale().tipomov() == 2)
salvaconto = TRUE;
}
else
{

View File

@ -12,6 +12,7 @@
#include <rmoviva.h>
#include <utility.h>
/*
// Calcola l'anno di esercizio di una data, e se prevesc != NULL calcola anche l'anno precedente
// Certified 99%
int date2esc(const TDate& d, int* prevesc)
@ -44,7 +45,8 @@ int date2esc(const TDate& d, int* prevesc)
}
return anno;
}
}
*/
///////////////////////////////////////////////////////////
// Movimento di prima nota

View File

@ -5,8 +5,6 @@
#include <relation.h>
#endif
int date2esc(const TDate& d, int* prevesc = NULL);
class TMovimentoPN : public TRelation
{
// class TMovimentoPN : public TRelation

View File

@ -1418,12 +1418,12 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if ((key == K_TAB && m.is_running()) || key == K_ENTER)
{
const TDate dr(f.get()); // Data dell'operazione
const TDate dr(f.get()); // Data dell'operazione
if (dr > TDate(TODAY))
return f.error_box("La data dell'operazione e' superiore quella di sistema");
const int ae = date2esc(dr); // Anno esercizio
if (ae == 0)
const int ae = app()._esercizi.date2esc(dr); // Anno esercizio
if (ae <= 0)
return f.error_box("La data dell'operazione non appartiene a nessun esercizio");
if (m.query_mode() || app().giornale().year() != ae)
@ -1488,8 +1488,8 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
if (reg.iva() != nessuna_iva && app()._rel->controlla_liquidazione(dr) == TRUE)
{
const char* m = itom(dr.month());
f.warning_box("La liquidazione IVA relativa al mese di %s e' gia' stata calcolata", m);
const char* const mese = itom(dr.month());
f.warning_box("La liquidazione IVA relativa al mese di %s e' gia' stata calcolata", mese);
}
}
}
@ -1513,9 +1513,9 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
datacomp = dr.string();
f.set(datacomp);
}
const TDate dc(datacomp); // Data di competenza
TEsercizi_contabili esc;
const int ae = esc.date2esc(dc); // Esercizio corrispondente
const TDate dc(datacomp); // Data di competenza
TEsercizi_contabili& esc = app()._esercizi;
const int ae = esc.date2esc(dc); // Esercizio corrispondente
const char* data = "del 74/ter";
if (f.dlg() == F_DATACOMP)
@ -1569,12 +1569,12 @@ bool TPrimanota_application::doc_handler(TMask_field& f, KEY key)
{
TMask& m = f.mask();
if (key == K_TAB && m.is_running())
if (key == K_TAB && m.insert_mode() && app().is_saldaconto())
{
const TString16 val(f.get());
if (val.not_empty() && m.insert_mode() && m.field(F_ANNORIF).active())
{ // Se c'e' gestione saldaconto
if (val.not_empty())
{
if (f.dlg() == F_DATADOC)
{
const TDate dd(val);

View File

@ -60,8 +60,11 @@ class TPrimanota_application : public TRelation_application
TDate _last_dcom; // Ultima data competenza inserita
TBill _conto_ricavo; // Conto di ricavo del clifo
TString_array _pag_rows;
TToken_string _tmp; // Stringa temporanea da ritornare
TString_array _pag_rows; // Copia dello sheet delle rate
TEsercizi_contabili _esercizi; // Tabella degli esercizi contabili
static bool showpartite_handler(TMask_field& f, KEY k);
static bool speserimb_handler(TMask_field& f, KEY k);

View File

@ -1,4 +1,6 @@
#include <applicat.h>
#include <stdlib.h>
#include <prefix.h>
#include <tabutil.h>
#include "cg2103.h"
@ -138,7 +140,7 @@ bool TRegistro::read_att()
TLocalisamfile attiv(LF_ATTIV);
attiv.setkey(1);
attiv.put("CODDITTA", main_app().get_firm());
attiv.put("CODDITTA", prefix().get_codditta());
attiv.put("CODATT", attivita());
const int err = attiv.read();
_att = attiv.curr();
@ -146,7 +148,7 @@ bool TRegistro::read_att()
_att.zero();
TString16 chiave; // Ditta - Anno - Attivita' - Tipo Attivita' (fissata a 1)
chiave.format("%05ld", main_app().get_firm());
chiave.format("%05ld", prefix().get_codditta());
chiave << year(); // non fare << year() << attivita()
chiave << attivita() << "1";

View File

@ -3,8 +3,6 @@
// fv 24/8/94
// --------------------------------------------------------------------------
#include <sheet.h>
#include <utility.h>
#include "pagament.h"
#include "saldacon.h"
@ -579,7 +577,7 @@ void TPrimanota_application::write_scadenze(const TMask& m)
partita.put(PART_SPESE, pag.spese());
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
partita.elimina_rate();
partita.elimina_rata(-1);
for (int i = 0; i < pag.n_rate(); i++)
{
TToken_string& row = ps.row(i);
@ -638,7 +636,7 @@ void TPrimanota_application::write_scadenze(const TMask& m)
}
}
if (newgame != NULL) // Se ho cancellato il numero partita ...
if (newgame != NULL) // Se non ho cancellato il numero partita ...
newgame->write(); // Salva nuova partita
}

View File

@ -1,11 +1,13 @@
// cglib01.cpp
// calcolo dei saldi
#include <applicat.h>
// La compilazione e' gia' lenta da sola: evitare include inutili (Guy)
// #include <applicat.h>
// #include <utility.h>
#include <config.h>
#include <isam.h>
#include <tabutil.h>
#include <utility.h>
#include "cglib.h"
#include <rmov.h>
#include <mov.h>
@ -14,7 +16,6 @@
#include <causali.h>
#include <clifo.h>
#include "cglib.h"
///////////////////////////////////////////////////////////
// Causale
@ -56,23 +57,12 @@ bool TCaus::apertura() const
//
// Cerca l'esercizio precedente di EseCorr
// Se EseCorr e' gia' il primo ritorna 0
// senno' ritorna, astutamente, EseCorr - 1
// senno' ritorna il precedente (Stavolta meno astutamente, ma correttamente)
//
const int EsePre(const int EseCorr)
{
TTable ese("ESC");
TString first(30);
TString16 codtab;
ese.first();
first = ese.get("CODTAB");
codtab.format("%04d", EseCorr);
if (codtab == first)
return 0;
return EseCorr - 1;
TEsercizi_contabili esc;
return esc.pred(EseCorr);
}
// aep e' l'esercizio precedente
@ -361,7 +351,7 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
// "I mov. di puro riferimento (= con importo = 0) vanno scartati"
if (importo == ZERO) continue;
gcs_corr = format ("%3d%3d%6ld", gruppo, conto, sottoconto);
gcs_corr.format ("%3d%3d%6ld", gruppo, conto, sottoconto);
if (gcs_corr != gcs_prec)
{
@ -560,10 +550,10 @@ bool TSaldo::ultima_immissione_bilancio(int annoes,int g,int c,long s,int indbil
TRectype& TSaldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
{
TLocalisamfile saldi(LF_SALDI, FALSE);
TLocalisamfile saldi(LF_SALDI);
// Tre righe inutili che vengono gia' eseguite da TLocalisamfile (Guy)
const int oldkey = saldi.getkey();
saldi.setkey(1);
saldi.zero();
@ -580,15 +570,15 @@ TRectype& TSaldo::ricerca_progr_prec (int annoesprec, int g, int c, long s)
_rec_presente_ep = FALSE;
}
(*_saldo_ep) = saldi.curr();
saldi.setkey(oldkey);
*_saldo_ep = saldi.curr();
// riposiziona...
// riposiziona... 7 righe inutili (Guy)
saldi.setkey(oldkey);
saldi.zero();
saldi.put(SLD_GRUPPO,g);
saldi.put(SLD_CONTO,c);
saldi.put(SLD_SOTTOCONTO,s);
saldi.put(SLD_ANNOES,annoesprec+1);
saldi.put(SLD_ANNOES,annoesprec+1); // Astuto anche questo (Guy)
saldi.read(_isequal);
return (*_saldo_ep);

View File

@ -5,10 +5,11 @@
//
/////////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
// La compilazione e' gia' lenta da sola: evitare include inutili (Guy)
// #include <stdlib.h>
// #include <utility.h>
#include <applicat.h>
#include <utility.h>
#include <prefix.h>
#include "cglib.h"
@ -165,7 +166,7 @@ void TSaldo_agg::registra()
CHECK(tcon.ok(), "Tentavi di saldare un conto incompleto, eh?");
saldi.zero();
saldi.put(SLD_ANNOES, atoi(hobj->key().left(4)) );
saldi.put(SLD_ANNOES, hobj->key().left(4));
saldi.put(SLD_GRUPPO, tcon.gruppo());
saldi.put(SLD_CONTO, tcon.conto());
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
@ -175,7 +176,7 @@ void TSaldo_agg::registra()
if (saldi.read(_isequal, _lock) != NOERR)
{
saldi.zero();
saldi.put(SLD_ANNOES, atoi(hobj->key().left(4)));
saldi.put(SLD_ANNOES, hobj->key().left(4));
saldi.put(SLD_GRUPPO, tcon.gruppo());
saldi.put(SLD_CONTO, tcon.conto());
saldi.put(SLD_SOTTOCONTO, tcon.sottoconto());
@ -279,8 +280,7 @@ TEsercizi_contabili::TEsercizi_contabili() : _firm(0)
void TEsercizi_contabili::update()
{
_firm = main_app().get_firm();
_firm = prefix().get_codditta();
destroy();
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
@ -293,7 +293,7 @@ void TEsercizi_contabili::update()
void TEsercizi_contabili::check()
{
if (_firm != main_app().get_firm())
if (_firm != prefix().get_codditta())
{
#ifdef DBG
if (_firm != 0)