Patch level :
Files correlati : pd0610.exe Ricompilazione Demo : [ ] Commento : CReazione ordini SRM git-svn-id: svn://10.65.10.50/branches/R_10_00@21426 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cd691136c7
commit
c2be52559c
@ -188,7 +188,7 @@ TDocumento& TOrdf_cache::doc(const long codcf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//metodo costruttore di una cache di 20 elementi
|
//metodo costruttore di una cache di 20 elementi
|
||||||
TOrdf_cache::TOrdf_cache(const char* from_tipodoc, const TDate& datadoc) : TCache(20)
|
TOrdf_cache::TOrdf_cache(const char* from_tipodoc, const TDate& datadoc) : TCache()
|
||||||
{
|
{
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
key.add("TIP");
|
key.add("TIP");
|
||||||
@ -231,7 +231,7 @@ protected:
|
|||||||
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);
|
||||||
TDoc_key * crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca);
|
TDoc_key * 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_ordf(const TDoc_key& adoc, TOrdf_cache& ca);
|
||||||
void elimina_righe(const TDocumento& ordc, const TAssoc_array & ords, TOrdf_cache& ca);
|
void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca);
|
||||||
|
|
||||||
void elabora_ordini_cliente();
|
void elabora_ordini_cliente();
|
||||||
|
|
||||||
@ -384,6 +384,8 @@ TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nr
|
|||||||
ordf.put(DOC_CODCMS, ordc.get(DOC_CODCMS));
|
ordf.put(DOC_CODCMS, ordc.get(DOC_CODCMS));
|
||||||
ordf.put(DOC_CODCOSTO, ordc.get(DOC_CODCOSTO));
|
ordf.put(DOC_CODCOSTO, ordc.get(DOC_CODCOSTO));
|
||||||
ordf.put(DOC_FASCMS, ordc.get(RDOC_FASCMS));
|
ordf.put(DOC_FASCMS, ordc.get(RDOC_FASCMS));
|
||||||
|
ordf.put(DOC_NUMDOCRIF, ordc.numero());
|
||||||
|
ordf.put(DOC_DATADOCRIF, ordc.get(DOC_DATADOC));
|
||||||
TRiga_documento & row = ordf.new_row("05");
|
TRiga_documento & row = ordf.new_row("05");
|
||||||
TString rif;
|
TString rif;
|
||||||
|
|
||||||
@ -410,7 +412,7 @@ void TCrea_ordini_srm_app::elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//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, const TAssoc_array & ords, TOrdf_cache& ca)
|
void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, TOrdf_cache& ca)
|
||||||
{
|
{
|
||||||
const char provv = ordc.get_char(DOC_PROVV);
|
const char provv = ordc.get_char(DOC_PROVV);
|
||||||
const int anno = ordc.get_int(DOC_ANNO);
|
const int anno = ordc.get_int(DOC_ANNO);
|
||||||
@ -432,30 +434,25 @@ void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, const TAssoc_ar
|
|||||||
const int nriga = rdoc.get(RDOC_NRIGA).as_int();
|
const int nriga = rdoc.get(RDOC_NRIGA).as_int();
|
||||||
TDoc_key kordf(rdoc.get(RDOC_ANNO).as_int(), rdoc.get(RDOC_CODNUM).as_string(), rdoc.get(RDOC_NDOC).as_int(), rdoc.get(RDOC_PROVV).as_string()[0]);
|
TDoc_key kordf(rdoc.get(RDOC_ANNO).as_int(), rdoc.get(RDOC_CODNUM).as_string(), rdoc.get(RDOC_NDOC).as_int(), rdoc.get(RDOC_PROVV).as_string()[0]);
|
||||||
TDocumento& ordf = ca.doc(kordf);
|
TDocumento& ordf = ca.doc(kordf);
|
||||||
|
const long ndoc = ordf.get_long(DOC_NDOC);
|
||||||
const long codfor = ordf.get_long(DOC_CODCF);
|
const long codfor = ordf.get_long(DOC_CODCF);
|
||||||
|
// bool trovato = false;
|
||||||
|
|
||||||
bool trovato = false;
|
TRiga_documento & r = ordf[nriga];
|
||||||
|
const TRectype * rordc = r.find_original_rdoc();
|
||||||
|
|
||||||
if (ords.is_key(kordf))
|
if (rordc != NULL)
|
||||||
{
|
{
|
||||||
for(int i = 1; i <= ordc.physical_rows(); i++)
|
if (rordc->get(RDOC_PROVV) == rordc->get(DOC_PROVV) &&
|
||||||
|
rordc->get(RDOC_CODNUM) == rordc->get(DOC_CODNUM) &&
|
||||||
|
rordc->get(RDOC_ANNO) == rordc->get(DOC_ANNO) &&
|
||||||
|
rordc->get(RDOC_NDOC) == rordc->get(DOC_NDOC))
|
||||||
{
|
{
|
||||||
TRiga_documento rdoc = ordc[i];
|
if ((rordc->get_long(RDOC_CODAGG1) != codfor) &&
|
||||||
|
(rordc->get_long(RDOC_CODAGG2) != codfor))
|
||||||
if (daidriga == rdoc.get_long(RDOC_IDRIGA))
|
r.put("D", "X");
|
||||||
{
|
|
||||||
trovato = rdoc.get_long(RDOC_CODAGG1) == codfor;
|
|
||||||
trovato |= rdoc.get_long(RDOC_CODAGG2) == codfor;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!trovato)
|
|
||||||
{
|
|
||||||
TRiga_documento & r = ordf[nriga];
|
|
||||||
|
|
||||||
r.put("D", "X");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
for(bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
|
for(bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
|
||||||
{
|
{
|
||||||
@ -485,7 +482,6 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
|
|||||||
|
|
||||||
TDoc_key dadoc(anno, codnum, ndoc, provv);
|
TDoc_key dadoc(anno, codnum, ndoc, provv);
|
||||||
TDoc_key ordf;
|
TDoc_key ordf;
|
||||||
TAssoc_array ords;
|
|
||||||
|
|
||||||
TDocumento ordc(provv, anno, codnum, ndoc);
|
TDocumento ordc(provv, anno, codnum, ndoc);
|
||||||
|
|
||||||
@ -494,7 +490,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
|
||||||
|
|
||||||
// message_box("start");
|
message_box("start");
|
||||||
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];
|
||||||
@ -510,14 +506,9 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
|
|||||||
elimina_ordf(ordf, ca);
|
elimina_ordf(ordf, ca);
|
||||||
else
|
else
|
||||||
aggiorna_ordf(ordc, i, ordf, ca);
|
aggiorna_ordf(ordc, i, ordf, ca);
|
||||||
ords.add(ordf, ordf);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca);
|
TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca);
|
||||||
|
|
||||||
ords.add(*ordf, ordf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (codfor2 > 0)
|
if (codfor2 > 0)
|
||||||
{
|
{
|
||||||
@ -528,18 +519,13 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
|
|||||||
elimina_ordf(ordf, ca);
|
elimina_ordf(ordf, ca);
|
||||||
else
|
else
|
||||||
aggiorna_ordf(ordc, i, ordf, ca);
|
aggiorna_ordf(ordc, i, ordf, ca);
|
||||||
ords.add(ordf, ordf);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca);
|
TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca);
|
||||||
|
|
||||||
ords.add(*ordf, ordf);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
elimina_righe(ordc, ords, ca);
|
elimina_righe(ordc, ca);
|
||||||
ca.destroy();
|
ca.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user