Corretta gestione data chiusura esercizio.
Ora questa viene aggiornata dal programma di chiusura/apertura e la prima nota avverte che è sconsigliabile inserire movimenti prima della chiusura git-svn-id: svn://10.65.10.50/branches/R_10_00@22675 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
8a6dccdde8
commit
ac5b4f39bc
@ -2235,21 +2235,28 @@ bool TPrimanota_application::caus_modify_handler(TMask_field& f, KEY key)
|
||||
bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
bool ok = true;
|
||||
TMask& m = f.mask();
|
||||
|
||||
//if ((key == K_TAB && m.is_running() ) || key == K_ENTER)
|
||||
|
||||
if (key == K_TAB && f.focusdirty() || key == K_ENTER)
|
||||
{
|
||||
const TDate dr(f.get()); // Data dell'operazione
|
||||
if (dr > TDate(TODAY))
|
||||
{
|
||||
const TDate oggi(TODAY);
|
||||
TDate dr(f.get()); // Data dell'operazione
|
||||
if (dr > oggi)
|
||||
return f.error_box(TR("La data dell'operazione e' superiore quella di sistema"));
|
||||
|
||||
TMask& m = f.mask();
|
||||
if (dr == oggi && m.query_mode() && !m.field(F_NUMREG).empty())
|
||||
{
|
||||
TLocalisamfile mov(LF_MOV);
|
||||
mov.put(MOV_NUMREG, m.get(F_NUMREG));
|
||||
if (mov.read() == NOERR)
|
||||
dr = mov.get_date(MOV_DATAREG);
|
||||
}
|
||||
|
||||
TPrimanota_application& a = app();
|
||||
|
||||
const int ae = a._esercizi.date2esc(dr); // Codice esercizio
|
||||
if (ae <= 0)
|
||||
return f.error_box(TR("La data dell'operazione non appartiene a nessun esercizio"));
|
||||
|
||||
|
||||
TLibro_giornale& gio = a.giornale();
|
||||
const int ar = dr.year(); // Anno per registri
|
||||
if (m.query_mode() || gio.year() != ar)
|
||||
@ -2270,15 +2277,24 @@ bool TPrimanota_application::datareg_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (dr < gio.last_print())
|
||||
{
|
||||
f.error_box(FR("La data dell'operazione e' antecedente al %s,\n"
|
||||
f.error_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||
"ultima stampa del libro giornale del %d"),
|
||||
gio.last_print().string(), ar);
|
||||
if (error) return false;
|
||||
}
|
||||
if (key == K_TAB && dr < gio.last_reg())
|
||||
f.warning_box(FR("La data dell'operazione e' antecedente al %s,\n"
|
||||
f.warning_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||
"ultima registrazione sul libro giornale del %d"),
|
||||
gio.last_reg().string(), ar);
|
||||
|
||||
const TDate chiusura = a._esercizi[ae].chiusura();
|
||||
if (chiusura.ok() && dr <= chiusura)
|
||||
{
|
||||
f.error_box(FR("La data dell'operazione è antecedente al %s,\n"
|
||||
"data di chiusura dell'esercizio %d"),
|
||||
chiusura.stringa(), ae);
|
||||
if (error) return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (m.query_mode())
|
||||
@ -2367,7 +2383,7 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
|
||||
}
|
||||
}
|
||||
|
||||
if (ae)
|
||||
if (ae > 0)
|
||||
{
|
||||
const int ar = esc.date2esc(dr); // Esercizio in corso
|
||||
const int pr = esc.pred(ar); // Esercizio precedente
|
||||
@ -2378,6 +2394,15 @@ bool TPrimanota_application::datacomp_handler(TMask_field& f, KEY key)
|
||||
if (pr > 0) e << TR(" o all'esercizio ") << pr;
|
||||
return f.error_box(e);
|
||||
}
|
||||
|
||||
const TDate chiusura = app()._esercizi[ae].chiusura();
|
||||
if (chiusura.ok() && dc <= chiusura)
|
||||
{
|
||||
return f.error_box(FR("%s è antecedente al %s,\n"
|
||||
"data di chiusura dell'esercizio %d"),
|
||||
data, chiusura.stringa(), ae);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "cg4300b.h"
|
||||
|
||||
PAGE "Estrazione deleghe" -1 -1 45 10
|
||||
PAGE "Estrazione deleghe" -1 -1 45 8
|
||||
|
||||
NUMBER FLD_CGB_YEAR 4
|
||||
BEGIN
|
||||
@ -29,7 +29,7 @@ END
|
||||
|
||||
BUTTON DLG_SELECT 10 2
|
||||
BEGIN
|
||||
PROMPT -12 5 "Scegli"
|
||||
PROMPT -12 5 "Ditte"
|
||||
HELP "Selezionare le ditte di cui estrarre le deleghe"
|
||||
MESSAGE EXIT,DLG_SELECT
|
||||
END
|
||||
@ -41,15 +41,11 @@ BEGIN
|
||||
MESSAGE EXIT,BUT_CGB_ALL
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
ENDPAGE
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include "elabar.h"
|
||||
|
||||
ENDPAGE
|
||||
|
||||
|
@ -33,7 +33,7 @@ bool TLiquidazione_app::set_deleghe()
|
||||
|
||||
for (;;)
|
||||
{
|
||||
if (k == K_ESC || k == K_ENTER)
|
||||
if (k == K_ESC || k == K_QUIT || k == K_ENTER)
|
||||
break;
|
||||
|
||||
k = m.run();
|
||||
|
@ -577,6 +577,15 @@ bool TApertura_chiusura::set()
|
||||
apri_conti_ordine();
|
||||
apertura_capitale_netto();
|
||||
|
||||
// Aggiorna data di chiusura su tabella esercizi: novità 2012
|
||||
TTable esc("ESC");
|
||||
esc.put("CODTAB", _annoesch);
|
||||
if (esc.read(_lock) == NOERR)
|
||||
{
|
||||
esc.put("D3", _dataregch);
|
||||
esc.rewrite();
|
||||
}
|
||||
|
||||
delete _prog;
|
||||
message_box(TR("Apertura/chiusura conti completata"));
|
||||
} //K_ENTER
|
||||
|
@ -6,11 +6,14 @@
|
||||
#include <mask.h>
|
||||
#include <tabutil.h>
|
||||
#include <recarray.h>
|
||||
#include <recset.h>
|
||||
#include <relation.h>
|
||||
|
||||
#include <clifo.h>
|
||||
#include <comuni.h>
|
||||
#include <mov.h>
|
||||
#include <pconti.h>
|
||||
#include <causali.h>
|
||||
#include <rcausali.h>
|
||||
#include <rmoviva.h>
|
||||
#include <rmov.h>
|
||||
@ -43,6 +46,56 @@ int TEsercizio::compare(const TSortable& s) const
|
||||
return c;
|
||||
}
|
||||
|
||||
const TDate& TEsercizio::chiusura() const
|
||||
{
|
||||
if (!_chiusura.ok() && fine() < TDate(TODAY))
|
||||
{
|
||||
TAssoc_array chiusure; // Lista delle causali di chiusura (solitamente una!)
|
||||
TISAM_recordset caus("USE CAUS SELECT MOVAP='C'");
|
||||
for (bool ok = caus.move_first(); ok; ok = caus.move_next())
|
||||
{
|
||||
const TString& codcaus = caus.get(CAU_CODCAUS).as_string();
|
||||
chiusure.add(codcaus, codcaus);
|
||||
}
|
||||
|
||||
const TDate presto = fine(); // Prima data utile per chiusura esercizio
|
||||
TDate tardi = presto; tardi.addyear(); // Ultima data utile per chiusura esercizio
|
||||
|
||||
TString query;
|
||||
query = "USE MOV KEY 2";
|
||||
if (chiusure.items() == 1)
|
||||
{
|
||||
const TString& codcaus = *(TString*)chiusure.first_item();
|
||||
query << " SELECT CODCAUS='" << codcaus << '\'';
|
||||
}
|
||||
query << "\nFROM DATAREG=#PRESTO\nTO DATAREG=#TARDI";
|
||||
TISAM_recordset mov(query);
|
||||
mov.set_var("#PRESTO", presto);
|
||||
mov.set_var("#TARDI", tardi);
|
||||
for (bool ok = mov.move_first(); ok; ok = mov.move_next())
|
||||
{
|
||||
const TString& codcaus = mov.get(MOV_CODCAUS).as_string();
|
||||
if (chiusure.is_key(codcaus))
|
||||
{
|
||||
const TDate datacomp = mov.get(MOV_DATACOMP).as_date();
|
||||
if (datacomp <= presto)
|
||||
{
|
||||
((TDate&)_chiusura) = datacomp; // Forzatura
|
||||
TTable esc("ESC");
|
||||
esc.put("CODTAB", codice());
|
||||
if (esc.read(_lock) == NOERR)
|
||||
{
|
||||
esc.put("D3", datacomp);
|
||||
esc.rewrite();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return _chiusura;
|
||||
}
|
||||
|
||||
TEsercizi_contabili::TEsercizi_contabili()
|
||||
{ }
|
||||
|
||||
|
@ -20,7 +20,7 @@ public:
|
||||
const TDate& inizio() const { return _inizio; }
|
||||
const TDate& fine() const { return _fine; }
|
||||
const TDate& scarico() const { return _scarico; }
|
||||
const TDate& chiusura() const { return _chiusura; }
|
||||
const TDate& chiusura() const;
|
||||
const TDate& chiusura_mag() const { return _chiusura_mag; }
|
||||
|
||||
TEsercizio(const TRectype& rec);
|
||||
|
Loading…
x
Reference in New Issue
Block a user