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(); 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
{ {

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 // 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);