Patch level : 4.0 606

Files correlati     :  ca2.exe
Ricompilazione Demo : [ ]
Commento            :


Corretto il riparto batch sui costi


git-svn-id: svn://10.65.10.50/trunk@14851 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2007-02-06 23:50:51 +00:00
parent d1e06c7b02
commit 6765cdb7fc
5 changed files with 93 additions and 11 deletions

View File

@ -4,6 +4,7 @@
#include <recarray.h>
#include <relation.h>
#include "../cg/cglib01.h"
#include "calib01.h"
#include "calib02.h"
@ -85,6 +86,18 @@ bool TRib_movanal_msk::on_field_event(TOperable_field& o, TField_event e, long j
{
switch (o.dlg())
{
case F_DATAINI:
case F_DATAFIN:
if (e == fe_close)
{
const int anno = get_int(F_ANNO);
TEsercizi_contabili esc; //..le date devono essere incluse nell'esercizio selezionato!
const TDate data(o.get());
if (!data.empty() && esc.date2esc(data) != anno)
return error_box(TR("La data deve appartenere all'anno selezionato"));
}
break;
case DLG_OK:
case DLG_SAVEREC:
if (e == fe_button)
@ -128,6 +141,7 @@ protected:
public:
bool cappotta_movimento(TAnal_mov& anal_mov);
TRib_movanal_app(){}
};
void TRib_movanal_app::copia_campo(const TRectype& src, const char* campo_src,
@ -369,8 +383,11 @@ void TRib_movanal_app::main_loop()
//deve scandire il file MOVANA con chiave 2 (per data e numero di registrazione)
TRelation rel_movana(LF_MOVANA);
TRectype darec(LF_MOVANA), arec(LF_MOVANA);
darec.put(MOVANA_DATAREG, mask.get_date(F_DATAINI));
arec.put(MOVANA_DATAREG, mask.get_date(F_DATAFIN));
const TDate & dal = mask.get_date(F_DATAINI);
darec.put(MOVANA_DATAREG, dal);
const TDate & al = mask.get_date(F_DATAFIN);
arec.put(MOVANA_DATAREG, al);
_cache_rip.set_esercizio(al);
TCursor cur_movana(&rel_movana, "BLOCCATO!=\"X\"", 2, &darec, &arec);
const long items = cur_movana.items();

View File

@ -3,6 +3,7 @@
#define F_DATAINI 201
#define F_DATAFIN 202
#define F_DEFINITIVO 203
#define F_ANNO 204
#define F_RIGHE 300
#define F_CODCAUS 113

View File

@ -30,23 +30,39 @@ BEGIN
PROMPT 1 1 "@bParametri di elaborazione"
END
DATA F_DATAINI
NUMBER F_ANNO 4
BEGIN
PROMPT 2 2 "Dalla data "
PROMPT 2 2 "Esercizio "
USE ESC
INPUT CODTAB F_ANNO
DISPLAY "Codice Esercizio" CODTAB
DISPLAY "Data inizio esercizio" D0
DISPLAY "Data fine esercizio " D1
OUTPUT F_ANNO CODTAB
OUTPUT F_DATAINI D0
OUTPUT F_DATAFIN D1
CHECKTYPE REQUIRED
FLAGS "RZ"
ADD NONE
END
DATA F_DATAFIN
BEGIN
PROMPT 2 3 "Alla data "
CHECKTYPE REQUIRED
END
BOOLEAN F_DEFINITIVO
BEGIN
PROMPT 42 2 "Blocca movimenti elaborati"
END
DATA F_DATAINI
BEGIN
PROMPT 2 3 "Dalla data "
CHECKTYPE REQUIRED
END
DATA F_DATAFIN
BEGIN
PROMPT 42 3 "Alla data "
CHECKTYPE REQUIRED
END
SPREADSHEET F_RIGHE
BEGIN
PROMPT 0 5 ""

View File

@ -6,6 +6,7 @@
#include <pconti.h>
#include "calib01.h"
#include "calib02.h"
#include "calibmsk.h"
#include "../cg/cg2103.h"
@ -1455,14 +1456,58 @@ TObject* TCache_ripartizioni::key2obj(const char* key)
}
TString80 chiave;
if (rip.read() == NOERR)
const bool found = (rip.read() == NOERR);
if (found)
chiave << "B|" << rip.get(RIP_CODICE);
TRecord_array* rows = new TRecord_array(chiave, LF_RRIP);
if (found && rip.get_int(RIP_TIPORIP) == 1)
{
bool some_value = false;
const int items = rows->rows();
for (int i = 1; i <= items; i++)
{
TRectype & rec = (*rows)[i];
TAnal_bill bill;
bill.set_conto(rec.get(RRIP_CODCONTO));
bill.set_costo(rec.get(RRIP_CODCOSTO));
bill.set_commessa(rec.get(RRIP_CODCMS));
bill.set_fase(rec.get(RRIP_CODFASE));
const TSaldanal& s = ca_saldo(bill, _dal, _al, _saldanal_consuntivo);
TImporto val = s._ini;
val.normalize('D');
some_value |= val.valore() != ZERO;
rec.put(RRIP_RIPARTO, val.valore());
}
if (!some_value)
{
for (int i = 1; i <= items; i++)
{
TRectype & rec = (*rows)[i];
rec.put(RRIP_RIPARTO, "1");
}
}
}
return (TObject*)rows;
}
void TCache_ripartizioni::set_esercizio(const TDate & d)
{
TEsercizi_contabili e;
const TEsercizio & esc = e.esercizio(d);
_dal = esc.inizio();
_al = esc.fine();
destroy();
}
const TRecord_array& TCache_ripartizioni::righe(const char* costo, const char* commessa)
{
TToken_string parametro;

View File

@ -177,10 +177,13 @@ public:
class TCache_ripartizioni : public TCache
{
TDate _dal, _al;
protected:
virtual TObject* key2obj(const char* key);
public:
void set_esercizio(const TDate & d);
const TRecord_array& righe(const char* costo, const char* commessa);
const TRecord_array& righe(const int gruppo, const int conto, const long sottoconto);
const TRecord_array& righe(const TBill& bill);