Praticamente finita la fatturazione bolle.

git-svn-id: svn://10.65.10.50/trunk@3407 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-08-19 10:32:13 +00:00
parent 75c1edeb04
commit c37ca11dcf
3 changed files with 33 additions and 15 deletions

View File

@ -71,7 +71,7 @@ bool TFatturazione_bolle_app::menu(MENU_TAG)
{
TLista_documenti din, dout;
din.read('C', clienti[c], anno, dd, ad, codnum, dn, an);
const bool ok = eld.elabora(din, dout);
const bool ok = eld.elabora(din, dout, data_elab);
if (ok)
{
din.rewrite();

View File

@ -185,13 +185,19 @@ void TDocumento::set_key(TRectype& rec, char provv, int anno, const char* codnum
// Funzione statica utile a tutti gli utenti di LF_DOC e LF_RIGHEDOC
void TDocumento::copy_data(TRectype& dst, const TRectype& src)
{
{
// Memorizza tutti i campi chiave
const char provv = dst.get_char("PROVV");
const int anno = dst.get_int("ANNO");
const TString16 codnum = dst.get("CODNUM");
const long numdoc = dst.get_long("NDOC");
dst = src;
const long numdoc = dst.get_long("NDOC");
const int nriga = dst.num() == LF_RIGHEDOC ? dst.get_int("NRIGA") : 0;
// Copia tutto il record
dst = src;
// Ripristina tutti i campi chiave
set_key(dst, provv, anno, codnum, numdoc);
if (nriga > 0)
dst.put("NRIGA", nriga);
}
@ -238,12 +244,12 @@ int TDocumento::write(bool re) const
if (re)
{
err = _rows.write(re);
if (err != NOERR)
if (err == NOERR)
{
err = TRectype::rewrite(doc);
if (err != NOERR)
err = TRectype::write(doc);
}
}
}
else
{
@ -675,17 +681,21 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
for (int r = 1; r <= doc_in.rows(); r++)
{
const TRiga_documento& rin = doc_in[r];
if (ignora_desc && rin.solo_descrizione())
const bool rindesc = rin.solo_descrizione(); // La riga di input e' descrittiva
if (ignora_desc && rindesc)
continue;
bool elaborata = FALSE;
if (ragg_rig) // Se devo raggruppare le righe ...
// Raggruppo le righe se e' settato il falg di raggruppamento e
// se la riga non contiene solo una descrizione
if (ragg_rig && !rindesc) // Se devo raggruppare le righe ...
{
const int last = doc_out.rows();
for (int o = 1; o <= last; o++) // ... cerca una riga compatibile
{
TRiga_documento& rout = doc_out[o];
if (rout.solo_descrizione())
if (rout.solo_descrizione()) // Ignora le righe descrittive
continue;
if (rin.raggruppabile(rout, campi_riga)) // Se esiste una riga compatibile ...
{
@ -705,7 +715,8 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
return TRUE;
}
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out)
bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab)
{
bool ok = TRUE;
@ -724,7 +735,8 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
{
TDocumento& campione = doc_in[id];
const int tot = doc_out.items();
int od = tot;
int od = tot;
if (campione.raggruppabile()) // Se il documento ha il flag di raggruppabilita' ...
{
for (od = 0; od < tot; od++) // ... cerca un documento compatibile.
@ -741,10 +753,14 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
TDocumento* new_doc = new TDocumento(provv, anno, codnum, -1);
// Copia i dati della testata
TDocumento::copy_data(new_doc->head(), campione.head());
new_doc->put("DATADOC", data_elab);
// Aggiungilo alla lista dei documenti in uscita
od = doc_out.add(new_doc);
}
}
ok = raggruppa(campione, doc_out[od]);
}
}
return ok;
}

View File

@ -219,7 +219,8 @@ public:
char tipo_numerazione() const { return get_bool("B4") ? 'P' : 'D'; }
const TString& codice_numerazione_finale() const { return get("S6"); }
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out) pure;
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab) pure;
TElaborazione(const char* cod);
TElaborazione(const TRectype& rec) : TRectype(rec) { }
@ -230,7 +231,8 @@ class TFatturazione_bolle : public TElaborazione
{
public:
virtual bool raggruppa(TDocumento& din, TDocumento& dout);
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out);
virtual bool elabora(TLista_documenti& doc_in, TLista_documenti& doc_out,
const TDate& data_elab);
TFatturazione_bolle(const char* cod) : TElaborazione(cod) { }
virtual ~TFatturazione_bolle() { }