Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :


Personalizzazione SRM


git-svn-id: svn://10.65.10.50/branches/R_10_00@22012 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2011-04-21 12:37:12 +00:00
parent f4beafdeb5
commit b852a55830

@ -61,18 +61,6 @@ TObject* TOrdf_cache::key2obj(const char* key)
doc->put(DOC_DATADOC, _data);
doc->put(DOC_DATACONS, _data);
TToken_string keyc;
//gestione CONDV - Contratti
keyc.add('C'); //tipo
keyc.add(""); //categoria di vendita
keyc.add('F'); //tipocf
keyc.add(codcf); //codcf
keyc.add("001"); //codice contratto
const TRectype & contr = cache().get(LF_CONDV, keyc);
if (!contr.empty())
doc->put(DOC_CODCONT, "001");
}
else
{
@ -144,8 +132,8 @@ protected:
void aggiorna_righe(TDocumento& ordf, const TDocumento& ordc, const TRiga_documento& rordc, TRiga_documento& rordf, int idrigac);
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);
TDoc_key * crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca);
void aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca, bool first);
TDoc_key * crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca, bool first);
void elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca);
void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca);
@ -279,15 +267,64 @@ void TCrea_ordini_srm_app::ordini_fornitore(const TDocumento& ordc, const int nr
}
//AGGIORNA_ORDF: aggiorno l'ordine fornitore che esiste già in base alle modifiche fatte sull'ordine cliente attuale
void TCrea_ordini_srm_app::aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca)
void TCrea_ordini_srm_app::aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca, bool first)
{
TDocumento& ordf = ca.doc(adoc);
const TRiga_documento & orfrow = ordc[nriga];
const long codcf = ordf.get_long(DOC_CODCF);
TToken_string keyc;
const TString8 codlist = orfrow.get(first ? "LF1" : "LF2");
//gestione CONDV - Listini
if (codlist.full())
{
keyc.add('L'); //tipo
keyc.add(ordf.get(DOC_CATVEN)); //categoria di vendita
keyc.add(""); //tipocf
keyc.add(""); //codcf
keyc.add(codlist);
const TRectype& list = cache().get(LF_CONDV, keyc);
if (!list.empty())
ordf.put(DOC_CODCONT, codlist);
}
//gestione CONDV - Contratti
TString8 codcont = orfrow.get(first ? "CF1" : "CF2");
if (codcont.full())
{
keyc.cut(0);
keyc.add('C'); //tipo
keyc.add(""); //categoria di vendita
keyc.add('F'); //tipocf
keyc.add(codcf); //codcf
keyc.add(orfrow.get(first ? "CF1" : "CF2"));
const TRectype & contr = cache().get(LF_CONDV, keyc);
if (!contr.empty())
ordf.put(DOC_CODCONT, codcont);
else
codcont.cut(0);
}
if (codcont.full())
{
keyc.cut(0);
keyc.add('C'); //tipo
keyc.add(""); //categoria di vendita
keyc.add('F'); //tipocf
keyc.add(codcf); //codcf
keyc.add("001"); //codice contratto
const TRectype & contr1 = cache().get(LF_CONDV, keyc);
if (!contr1.empty())
ordf.put(DOC_CODCONT, "001");
}
ordini_fornitore(ordc, nriga, ordf);
}
//CREA_ORDF: creo un nuovo ordine cliente
TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca)
TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca, bool first)
{
TDoc_key kordf;
TDoc_key kdadoc(ordc.get_int(DOC_ANNO), ordc.get(DOC_CODNUM), ordc.get_long(DOC_NDOC), ordc.get_char(DOC_PROVV));
@ -302,6 +339,57 @@ TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nr
ordf.put(DOC_FASCMS, ordc.get(RDOC_FASCMS));
ordf.put(DOC_NUMDOCRIF, ordc.numero());
ordf.put(DOC_DATADOCRIF, ordc.get(DOC_DATADOC));
const TRiga_documento & orfrow = ordc[nriga];
const long codcf = ordf.get_long(DOC_CODCF);
TToken_string keyc;
const TString8 codlist = orfrow.get(first ? "LF1" : "LF2");
//gestione CONDV - Listini
if (codlist.full())
{
keyc.add('L'); //tipo
keyc.add(ordf.get(DOC_CATVEN)); //categoria di vendita
keyc.add(""); //tipocf
keyc.add(""); //codcf
keyc.add(codlist);
const TRectype& list = cache().get(LF_CONDV, keyc);
if (!list.empty())
ordf.put(DOC_CODCONT, codlist);
}
//gestione CONDV - Contratti
TString8 codcont = orfrow.get(first ? "CF1" : "CF2");
if (codcont.full())
{
keyc.cut(0);
keyc.add('C'); //tipo
keyc.add(""); //categoria di vendita
keyc.add('F'); //tipocf
keyc.add(codcf); //codcf
keyc.add(orfrow.get(first ? "CF1" : "CF2"));
const TRectype & contr = cache().get(LF_CONDV, keyc);
if (!contr.empty())
ordf.put(DOC_CODCONT, codcont);
else
codcont.cut(0);
}
if (codcont.full())
{
keyc.cut(0);
keyc.add('C'); //tipo
keyc.add(""); //categoria di vendita
keyc.add('F'); //tipocf
keyc.add(codcf); //codcf
keyc.add("001"); //codice contratto
const TRectype & contr1 = cache().get(LF_CONDV, keyc);
if (!contr1.empty())
ordf.put(DOC_CODCONT, "001");
}
TRiga_documento & row = ordf.new_row("05");
TString rif;
@ -421,10 +509,10 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
if (delete_docs)
elimina_ordf(ordf, ca);
else
aggiorna_ordf(ordc, i, ordf, ca);
aggiorna_ordf(ordc, i, ordf, ca, true);
}
else
TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca);
TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca, true);
}
if (codfor2 > 0)
{
@ -434,10 +522,10 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
if (delete_docs)
elimina_ordf(ordf, ca);
else
aggiorna_ordf(ordc, i, ordf, ca);
aggiorna_ordf(ordc, i, ordf, ca, false);
}
else
TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca);
TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca, false);
}
}