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:
parent
75c1edeb04
commit
c37ca11dcf
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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() { }
|
||||
|
Loading…
x
Reference in New Issue
Block a user