Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


git-svn-id: svn://10.65.10.50/branches/R_10_00@21329 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-12-17 14:04:34 +00:00
parent bb96d72185
commit 082db11138
2 changed files with 46 additions and 17 deletions

@ -219,6 +219,7 @@ protected:
void ordini_fornitore(const TDocumento& ordc, const int nriga, TDocumento& ordf); void ordini_fornitore(const TDocumento& ordc, const int nriga, TDocumento& ordf);
void aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca); void aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca);
void crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca); void crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca);
void elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca);
void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca); void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca);
void elabora_ordini_cliente(); void elabora_ordini_cliente();
@ -364,10 +365,22 @@ void TCrea_ordini_srm_app::aggiorna_ordf(const TDocumento& ordc, const int nriga
void TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca) void TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca)
{ {
TDocumento& ordf = ca.doc(codfor); TDocumento& ordf = ca.doc(codfor);
TRiga_documento & row = ordf.new_row("05");
TString rif;
ordc.tipo().riferimento(ordc, rif);
row.put(RDOC_DESCR, rif);
ordini_fornitore(ordc, nriga, ordf); ordini_fornitore(ordc, nriga, ordf);
} }
//ELIMINA_ORDF: aggiorno l'ordine fornitore che esiste già in base alle modifiche fatte sull'ordine cliente attuale
void TCrea_ordini_srm_app::elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca)
{
TDocumento& ordf = ca.doc(adoc);
ordf.remove();
}
//ELIMINA_RIGHE: elimino le righe dagli ordini fornitore che non compaiono più nell'ordine cliente in esame //ELIMINA_RIGHE: elimino le righe dagli ordini fornitore che non compaiono più nell'ordine cliente in esame
void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, TOrdf_cache& ca) void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, TOrdf_cache& ca)
{ {
@ -429,6 +442,7 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
//scorro le righe documento, fermandomi quando la set_paragraph fallisce //scorro le righe documento, fermandomi quando la set_paragraph fallisce
//dal momento che non so a priori quante sono le righe del documento //dal momento che non so a priori quante sono le righe del documento
for(int i = 1; i <= ordc.rows(); i++) for(int i = 1; i <= ordc.rows(); i++)
{ {
TRiga_documento& rordc = ordc[i]; TRiga_documento& rordc = ordc[i];
@ -436,6 +450,19 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
const long codfor2 = rordc.get_long(RDOC_CODAGG2); //da prendere dalla riga const long codfor2 = rordc.get_long(RDOC_CODAGG2); //da prendere dalla riga
const int idrigac = rordc.get_int(RDOC_IDRIGA); const int idrigac = rordc.get_int(RDOC_IDRIGA);
if (ordc.stato() == ' ')
{
if(cerca_orf(dadoc, idrigac, codfor1, codfor2, ordf1, ordf2))
{
if(codfor1 > 0)
elimina_ordf(ordf1, ca);
if(codfor2 > 0)
elimina_ordf(ordf2, ca);
}
}
else
{
if(cerca_orf(dadoc, idrigac, codfor1, codfor2, ordf1, ordf2)) if(cerca_orf(dadoc, idrigac, codfor1, codfor2, ordf1, ordf2))
{ {
if(codfor1 > 0) if(codfor1 > 0)
@ -453,6 +480,7 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
crea_ordf(ordc, i, codfor2, ca); crea_ordf(ordc, i, codfor2, ca);
} }
} }
}
elimina_righe(ordc, ca); elimina_righe(ordc, ca);
ca.destroy(); ca.destroy();

@ -493,7 +493,8 @@ bool TMotore_application::remove() // C 90
{ {
TDocumento& d = (TDocumento &) _rel->curr(); TDocumento& d = (TDocumento &) _rel->curr();
do_elab(d); // serve ?????? d.stato(' ');
do_elab(d);
const bool ok = TRelation_application::remove(); const bool ok = TRelation_application::remove();
if (ok) if (ok)
edit_mask().save_father_rows(); edit_mask().save_father_rows();