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:
guy 2009-11-17 09:09:30 +00:00
parent 69a74a7e58
commit fdc9f46eda
2 changed files with 34 additions and 37 deletions

View File

@ -854,11 +854,10 @@ public:
virtual ~TDocumento();
};
#define FOR_EACH_PHYSICAL_RDOC(__doc, __rdoc) TRiga_documento* __rdoc=NULL; TRecord_array& __b = (__doc).body(); \
for (int __r = __b.first_row(); __b.exist(__r) && (__rdoc=&(__doc)[__r])!=NULL; __r=__b.succ_row(__r))
#define FOR_EACH_PHYSICAL_RDOC_BACK(__doc, __rdoc) TRiga_documento* __rdoc=NULL; TRecord_array& __b = (__doc).body(); \
for (int __r = __b.last_row(); __r>0 && (__rdoc=&(__doc)[__r])!= NULL; __r = __b.pred_row(__r))
#define FOR_EACH_PHYSICAL_RDOC(__doc, __r, __rdoc) TRiga_documento* __rdoc=NULL; \
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, __r, __rdoc) TRiga_documento* __rdoc=NULL; \
for (int __r = (__doc).body().last_row(); __r>0 && (__rdoc=&(__doc)[__r])!= NULL; __r = (__doc).body().pred_row(__r))
class TCurrency_documento : public TCurrency
{

View File

@ -149,7 +149,7 @@ void TFatturazione_bolle::elabora_riga(TRiga_documento& r, TDocumento& doc_out,
// se la riga non contiene solo una descrizione
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
continue;
@ -192,7 +192,7 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
if (usa_dcons)
{
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);
if (!data_cons.ok())
@ -273,17 +273,21 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
memo = rout.get(RDOC_DESCR);
if (rout.get_bool(RDOC_DESCLUNGA))
memo << rout.get(RDOC_DESCEST);
if (memo.full())
memo << " - ";
memo << riferimento;
if (riferimento.full())
{
if (memo.full())
memo << " - ";
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);
else
{
rout.put(RDOC_DESCR, memo.left(rout.length(RDOC_DESCR)));
rout.put(RDOC_DESCEST, memo.mid(rout.length(RDOC_DESCR)));
rout.put(RDOC_DESCLUNGA, "X");
rout.put(RDOC_DESCR, memo.left(maxlen));
rout.put(RDOC_DESCEST, memo.mid(maxlen));
rout.put(RDOC_DESCLUNGA, true);
}
}
else
@ -299,9 +303,9 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
if (memo.empty())
{
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_DESCLUNGA, "X");
rout.put(RDOC_DESCLUNGA, true);
}
else
memo << '\n';
@ -317,17 +321,16 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
campi_raggruppamento_righe(campi_riga);
const bool ragg_rig = campi_riga.full();
for (int r = 1; r <= doc_in.physical_rows(); r++)
elabora_riga(doc_in[r], doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
FOR_EACH_PHYSICAL_RDOC(doc_in, r, rin)
elabora_riga(*rin, doc_out, usa_dcons, ragg_rig, ignora_desc, campi_riga, dcons, ddoc);
//cambio stato documento
bool cambia_stato_doc_in = true;
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))
if (!rin->sola_descrizione() && !rin->get_bool(RDOC_RIGAEVASA)) // Perche' non rin->is_evasa()
{
cambia_stato_doc_in = false;
break;
@ -343,7 +346,6 @@ bool TFatturazione_bolle::raggruppa(TDocumento& doc_in, TDocumento& doc_out)
const char stato_finale_out = get_char("S9");
doc_out.stato(stato_finale_out);
if (usa_dcons)
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 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())
rdoc.put(RDOC_CODIVA, codesiva);
rdoc->put(RDOC_CODIVA, codesiva);
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);
if (codiva.full())
rdoc.put(RDOC_CODIVA, codiva);
rdoc->put(RDOC_CODIVA, codiva);
}
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();
if (codiva.full())
rdoc.put(RDOC_CODIVA, codiva);
if (codiva.full())
rdoc->put(RDOC_CODIVA, codiva);
}
}
@ -548,8 +546,8 @@ bool TFatturazione_bolle::elabora(TLista_documenti& doc_in, TLista_documenti& do
if (reload_prices())
{
FOR_EACH_PHYSICAL_RDOC_BACK(d, r)
r->zero(RDOC_CHECKED);
FOR_EACH_PHYSICAL_RDOC_BACK(d, r, rdoc)
rdoc->zero(RDOC_CHECKED);
}
m.doc() = d;
m.doc2mask(true, true);