Patch level : 10.0
Files correlati : ve6 Ricompilazione Demo : [ ] Commento : Creata fantastica macro FOR_EACH_PHYSICAL_RDOC(doc, i, rdoc) git-svn-id: svn://10.65.10.50/trunk@19640 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
69a74a7e58
commit
fdc9f46eda
@ -854,11 +854,10 @@ public:
|
|||||||
virtual ~TDocumento();
|
virtual ~TDocumento();
|
||||||
};
|
};
|
||||||
|
|
||||||
#define FOR_EACH_PHYSICAL_RDOC(__doc, __rdoc) TRiga_documento* __rdoc=NULL; TRecord_array& __b = (__doc).body(); \
|
#define FOR_EACH_PHYSICAL_RDOC(__doc, __r, __rdoc) TRiga_documento* __rdoc=NULL; \
|
||||||
for (int __r = __b.first_row(); __b.exist(__r) && (__rdoc=&(__doc)[__r])!=NULL; __r=__b.succ_row(__r))
|
for (int __r = (__doc).body().first_row(); (__doc).body().exist(__r) && (__rdoc=&(__doc)[__r])!=NULL; __r=(__doc).body().succ_row(__r))
|
||||||
#define FOR_EACH_PHYSICAL_RDOC_BACK(__doc, __rdoc) TRiga_documento* __rdoc=NULL; TRecord_array& __b = (__doc).body(); \
|
#define FOR_EACH_PHYSICAL_RDOC_BACK(__doc, __r, __rdoc) TRiga_documento* __rdoc=NULL; \
|
||||||
for (int __r = __b.last_row(); __r>0 && (__rdoc=&(__doc)[__r])!= NULL; __r = __b.pred_row(__r))
|
for (int __r = (__doc).body().last_row(); __r>0 && (__rdoc=&(__doc)[__r])!= NULL; __r = (__doc).body().pred_row(__r))
|
||||||
|
|
||||||
|
|
||||||
class TCurrency_documento : public TCurrency
|
class TCurrency_documento : public TCurrency
|
||||||
{
|
{
|
||||||
|
@ -149,7 +149,7 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out,
|
|||||||
// se la riga non contiene solo una descrizione
|
// se la riga non contiene solo una descrizione
|
||||||
if (ragg_rig && !rindesc && da_raggruppare(rin)) // Se devo raggruppare le righe ...
|
if (ragg_rig && !rindesc && da_raggruppare(rin)) // Se devo raggruppare le righe ...
|
||||||
{
|
{
|
||||||
FOR_EACH_PHYSICAL_RDOC(doc_out, rout) // ... cerca una riga compatibile
|
FOR_EACH_PHYSICAL_RDOC(doc_out, r, rout) // ... cerca una riga compatibile
|
||||||
{
|
{
|
||||||
if (rout->sola_descrizione()) // Ignora le righe descrittive
|
if (rout->sola_descrizione()) // Ignora le righe descrittive
|
||||||
continue;
|
continue;
|
||||||
@ -192,7 +192,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
if (usa_dcons)
|
if (usa_dcons)
|
||||||
{
|
{
|
||||||
bool da_elaborare = FALSE;
|
bool da_elaborare = FALSE;
|
||||||
FOR_EACH_PHYSICAL_RDOC(doc_in, rin)
|
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
|
||||||
{
|
{
|
||||||
TDate data_cons = rin->get_date(RDOC_DATACONS);
|
TDate data_cons = rin->get_date(RDOC_DATACONS);
|
||||||
if (!data_cons.ok())
|
if (!data_cons.ok())
|
||||||
@ -273,17 +273,21 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
memo = rout.get(RDOC_DESCR);
|
memo = rout.get(RDOC_DESCR);
|
||||||
if (rout.get_bool(RDOC_DESCLUNGA))
|
if (rout.get_bool(RDOC_DESCLUNGA))
|
||||||
memo << rout.get(RDOC_DESCEST);
|
memo << rout.get(RDOC_DESCEST);
|
||||||
|
if (riferimento.full())
|
||||||
|
{
|
||||||
if (memo.full())
|
if (memo.full())
|
||||||
memo << " - ";
|
memo << " - ";
|
||||||
memo << riferimento;
|
memo << riferimento;
|
||||||
|
}
|
||||||
|
|
||||||
if (memo.len() < rout.length(RDOC_DESCR))
|
const int maxlen = rout.length(RDOC_DESCR);
|
||||||
|
if (memo.len() < maxlen && memo.find('\n') < 0)
|
||||||
rout.put(RDOC_DESCR, memo);
|
rout.put(RDOC_DESCR, memo);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rout.put(RDOC_DESCR, memo.left(rout.length(RDOC_DESCR)));
|
rout.put(RDOC_DESCR, memo.left(maxlen));
|
||||||
rout.put(RDOC_DESCEST, memo.mid(rout.length(RDOC_DESCR)));
|
rout.put(RDOC_DESCEST, memo.mid(maxlen));
|
||||||
rout.put(RDOC_DESCLUNGA, "X");
|
rout.put(RDOC_DESCLUNGA, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -299,9 +303,9 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
if (memo.empty())
|
if (memo.empty())
|
||||||
{
|
{
|
||||||
TString80 rif(rout.get(RDOC_DESCR));
|
TString80 rif(rout.get(RDOC_DESCR));
|
||||||
rif << '\n';
|
rif << '\n'; // Strano \n in un campo di testo normale?????????????????????????
|
||||||
rout.put(RDOC_DESCR, rif);
|
rout.put(RDOC_DESCR, rif);
|
||||||
rout.put(RDOC_DESCLUNGA, "X");
|
rout.put(RDOC_DESCLUNGA, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
memo << '\n';
|
memo << '\n';
|
||||||
@ -317,17 +321,16 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
campi_raggruppamento_righe(campi_riga);
|
campi_raggruppamento_righe(campi_riga);
|
||||||
const bool ragg_rig = campi_riga.full();
|
const bool ragg_rig = campi_riga.full();
|
||||||
|
|
||||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
|
||||||
elabora_riga(doc_in[r], doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
|
elabora_riga(*rin, doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
|
||||||
|
|
||||||
//cambio stato documento
|
//cambio stato documento
|
||||||
bool cambia_stato_doc_in = true;
|
bool cambia_stato_doc_in = true;
|
||||||
if (usa_dcons)
|
if (usa_dcons)
|
||||||
{
|
{
|
||||||
for (int r = 1; r <= doc_in.physical_rows(); r++)
|
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
|
||||||
{
|
{
|
||||||
const TRiga_documento & rin = doc_in[r];
|
if (!rin->sola_descrizione() && !rin->get_bool(RDOC_RIGAEVASA)) // Perche' non rin->is_evasa()
|
||||||
if (!rin.sola_descrizione() && !rin.get_bool(RDOC_RIGAEVASA))
|
|
||||||
{
|
{
|
||||||
cambia_stato_doc_in = false;
|
cambia_stato_doc_in = false;
|
||||||
break;
|
break;
|
||||||
@ -343,7 +346,6 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
|
|||||||
const char stato_finale_out = get_char("S9");
|
const char stato_finale_out = get_char("S9");
|
||||||
doc_out.stato(stato_finale_out);
|
doc_out.stato(stato_finale_out);
|
||||||
|
|
||||||
|
|
||||||
if (usa_dcons)
|
if (usa_dcons)
|
||||||
doc_in.rewrite();
|
doc_in.rewrite();
|
||||||
|
|
||||||
@ -397,30 +399,26 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
|||||||
const int rows = campione.physical_rows();
|
const int rows = campione.physical_rows();
|
||||||
const TString8 codesiva = campione.codesiva();
|
const TString8 codesiva = campione.codesiva();
|
||||||
|
|
||||||
for (int i = 1; i <= rows; i++)
|
FOR_EACH_PHYSICAL_RDOC(campione, i, rdoc)
|
||||||
{
|
{
|
||||||
TRiga_documento& rdoc = campione[i];
|
|
||||||
|
|
||||||
if (codesiva.full())
|
if (codesiva.full())
|
||||||
rdoc.put(RDOC_CODIVA, codesiva);
|
rdoc->put(RDOC_CODIVA, codesiva);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (rdoc.is_articolo())
|
if (rdoc->is_articolo())
|
||||||
{
|
{
|
||||||
const TArticolo_giacenza & art = rdoc.articolo();
|
const TArticolo_giacenza & art = rdoc->articolo();
|
||||||
const TString8 codiva = art.get(ANAMAG_CODIVA);
|
const TString8 codiva = art.get(ANAMAG_CODIVA);
|
||||||
|
|
||||||
if (codiva.full())
|
if (codiva.full())
|
||||||
rdoc.put(RDOC_CODIVA, codiva);
|
rdoc->put(RDOC_CODIVA, codiva);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (rdoc.is_spese() || rdoc.is_prestazione())
|
if ((rdoc->is_spese() || rdoc->is_prestazione()))
|
||||||
{
|
{
|
||||||
const TSpesa_prest & s = rdoc.spesa();
|
const TSpesa_prest & s = rdoc->spesa();
|
||||||
const TString8 codiva = s.cod_iva();
|
const TString8 codiva = s.cod_iva();
|
||||||
|
|
||||||
if (codiva.full())
|
if (codiva.full())
|
||||||
rdoc.put(RDOC_CODIVA, codiva);
|
rdoc->put(RDOC_CODIVA, codiva);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -548,8 +546,8 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
|
|||||||
|
|
||||||
if (reload_prices())
|
if (reload_prices())
|
||||||
{
|
{
|
||||||
FOR_EACH_PHYSICAL_RDOC_BACK(d, r)
|
FOR_EACH_PHYSICAL_RDOC_BACK(d, r, rdoc)
|
||||||
r->zero(RDOC_CHECKED);
|
rdoc->zero(RDOC_CHECKED);
|
||||||
}
|
}
|
||||||
m.doc() = d;
|
m.doc() = d;
|
||||||
m.doc2mask(true, true);
|
m.doc2mask(true, true);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user