Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@22121 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-05-13 15:53:16 +00:00
parent e5589e9c20
commit dcba1c1e51

View File

@ -85,13 +85,34 @@ bool TRileva_produzione_msk::elabora()
const long bolla_ndoc = bolla_rec.get_long(RDOC_NDOC);
const int bolla_nriga = bolla_rec.get_int(RDOC_NRIGA);
#endif
//campi che servono per raccatare la riga della BEM
const TString& bem_codnum = bolla_rec.get(RDOC_DACODNUM);
const long bem_anno = bolla_rec.get_int(RDOC_DAANNO);
const long bem_ndoc = bolla_rec.get_long(RDOC_DANDOC);
const long bem_idriga = bolla_rec.get_int(RDOC_DAIDRIGA);
//servono anche lavorazione e colore (almeno uno dei due c'e' in base alla query)
const TString& bolla_lav = bolla_rec.get(RDOC_CODCMS);
const TString& bolla_col = bolla_rec.get(RDOC_FASCMS);
//adesso prende la riga documento della BEM e aggiorna i valori se deve
TRectype& bem_rec = rdoc.curr();
//e' costretto ad usare una query e non una read() perche' IDRIGA non appartiene alle chiavi di RDOC
TString bem_query;
bem_query << "USE RDOC";
bem_query << "\nSELECT (IDRIGA=#IDRIGA)";
bem_query << "\nFROM CODNUM=BEM ANNO=#ANNO PROVV=D NDOC=#NDOC";
bem_query << "\nTO CODNUM=BEM ANNO=#ANNO PROVV=D NDOC=#NDOC";
TISAM_recordset bem_recset(bem_query);
bem_recset.set_var("#IDRIGA", bem_idriga);
bem_recset.set_var("#ANNO", bem_anno);
bem_recset.set_var("#NDOC", bem_ndoc);
const long bem_items = bem_recset.items();
if (bem_items > 1)
return error_box("C'e' piu' di una riga della BEM %ld con IDRIGA = %ld", bem_ndoc, bem_idriga);
/*TRectype& bem_rec = rdoc.curr();
const TString& bem_codnum = bolla_rec.get(RDOC_DACODNUM); //se non fosse BEM sarebbe un errore!!!
bem_rec.put(RDOC_CODNUM, bem_codnum);
const int bem_anno = bolla_rec.get_int(RDOC_DAANNO);
@ -100,32 +121,33 @@ bool TRileva_produzione_msk::elabora()
const long bem_ndoc = bolla_rec.get_long(RDOC_DANDOC);
bem_rec.put(RDOC_NDOC, bem_ndoc);
//occhio alla riga, raga! DAIDRIGA sulla rigabolla deve essere uguale a IDRIGA sulla rigabem, NON a NRIGA che è aleatorio!
const int bem_nriga = bolla_rec.get_int(RDOC_DAIDRIGA);
bem_rec.put(RDOC_IDRIGA, bem_nriga);
const int bem_idriga = bolla_rec.get_int(RDOC_DAIDRIGA);
bem_rec.put(RDOC_IDRIGA, bem_idriga);*/
if (bem_rec.read(rdoc) == NOERR)
//if (bem_rec.read(rdoc) == NOERR)
//{
TRectype& bem_rec = bem_recset.cursor()->curr();
const real bem_old_lav_qta = bem_rec.get_real(RDOC_QTAGG2);
const real bem_old_col_qta = bem_rec.get_real(RDOC_QTAGG1);
//solo le BEM a quantita' lavorazione e/o colore nulle possono essere aggiornate (senno' ci verrebbe del casino)
if (bolla_lav.full() && bem_old_lav_qta == ZERO) //lavorazione
{
const real bem_old_qta = bem_rec.get_real(RDOC_QTA);
//solo le BEM a quantita' nulla possono essere aggiornate (senno' ci verrebbe del casino)
if (bem_old_qta == ZERO)
{
if (bolla_lav.full()) //lavorazione
{
bem_rec.put(RDOC_CODCMS, bolla_lav);
bem_rec.put(RDOC_QTAGG2, bolla_qta);
bem_rec.put(RDOC_CODAGG2, dataprod);
}
if (bolla_col.full()) //colore
{
bem_rec.put(RDOC_FASCMS, bolla_col);
bem_rec.put(RDOC_QTAGG1, bolla_qta);
bem_rec.put(RDOC_DATACONS, dataprod);
}
const int err = bem_rec.rewrite(rdoc);
if (err != NOERR)
return false;
}
} //if(bem_rec.read(rdoc)...
bem_rec.put(RDOC_CODCMS, bolla_lav);
bem_rec.put(RDOC_QTAGG2, bolla_qta);
bem_rec.put(RDOC_CODAGG2, dataprod);
}
if (bolla_col.full() && bem_old_col_qta == ZERO) //colore
{
bem_rec.put(RDOC_FASCMS, bolla_col);
bem_rec.put(RDOC_QTAGG1, bolla_qta);
bem_rec.put(RDOC_DATACONS, dataprod);
}
const int err = bem_rec.rewrite(rdoc);
if (err != NOERR)
return false;
//} //if(bem_rec.read(rdoc)...
} // if (bolla_qta > ZERO)...
} //for (bool ok = recset.move_first()...