Correzioni per Bellegotti a programma personalizzato generazione ordini da commessa

git-svn-id: svn://10.65.10.50/branches/R_10_00@22664 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2012-05-23 14:43:52 +00:00
parent 20c6de0cf3
commit a9c5f00128
3 changed files with 631 additions and 685 deletions

View File

@ -191,7 +191,7 @@ bool TTabmod_caf_msk::on_field_event(TOperable_field& o, TField_event e, long jo
break;
case S_ARTICOLO:
if(e == fe_modify)
if (e == fe_modify)
{
TSheet_field& sheet = sfield(F_SHEET);
const int rsel = sheet.selected();
@ -206,7 +206,7 @@ bool TTabmod_caf_msk::on_field_event(TOperable_field& o, TField_event e, long jo
if (row.get(sheet.cid2index(S_ARTICOLO)) == codart)
{
TString msg;
msg << "Attenzione: esiste già una riga con articolo " << codart;
msg << TR("Attenzione: esiste già una riga con articolo ") << codart;
warning_box(msg);
sheet.select(rsel);
@ -223,8 +223,7 @@ bool TTabmod_caf_msk::on_field_event(TOperable_field& o, TField_event e, long jo
}
TTabmod_caf_msk::TTabmod_caf_msk() : TAutomask("pd0610100a")
{
}
{}
///////////////////////////////////////////////////////////
// TTabmod_caf_app
@ -233,22 +232,16 @@ TTabmod_caf_msk::TTabmod_caf_msk() : TAutomask("pd0610100a")
class TTabmod_caf_app: public TSkeleton_application
{
protected:
virtual bool check_autorization() const {return false;}
virtual const char * extra_modules() const {return "ve";}
virtual bool check_autorization() const { return false; }
virtual const char* extra_modules() const { return "ve"; }
virtual void main_loop();
void elabora();
};
void TTabmod_caf_app::elabora()
{
}
void TTabmod_caf_app::main_loop()
{
TTabmod_caf_msk m;
while (m.run() == K_ENTER)
{
elabora();
}
}

View File

@ -29,7 +29,7 @@ public:
const TString& tipodoc() { return _tipodoc;}
TDocumento& doc(const TDoc_key& kdoc);
TDocumento& doc(const long codcf);
TDocumento& doc(const long codcf);
TOrdf_cache(const char* from_tipodoc, const TDate& datatdoc);
};
@ -388,7 +388,6 @@ TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nr
void TCrea_ordini_srm_app::elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca)
{
TDocumento& ordf = ca.doc(adoc);
ordf.destroy_rows();
}
@ -409,52 +408,40 @@ void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, TOrdf_cache& ca
//scorro tutte le righe degli ordini fornitori; per ogni riga controllo se esiste ancora sull'ordine cliente;
//se non esiste più la elimino dall'ordine fornitore, sfruttando la cache dei documenti
for(bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
for (bool ok = rdoc.move_last(); ok; ok = rdoc.move_prev())
{
const 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);
const long codfor = ordf.get_long(DOC_CODCF);
const int daidriga = rdoc.get(RDOC_DAIDRIGA).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]);
TDocumento& ordf = ca.doc(kordf);
const long ndoc = ordf.get_long(DOC_NDOC);
const long codfor = ordf.get_long(DOC_CODCF);
// bool trovato = false;
TRiga_documento& r = ordf[nriga];
TRiga_documento & r = ordf[nriga];
const TRectype * rordc = r.find_original_rdoc();
if (rordc != NULL)
{
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))
{
if ((rordc->get_long(RDOC_CODAGG1) != codfor) &&
(rordc->get_long(RDOC_CODAGG2) != codfor))
r.put("D", "X");
}
}
bool kill = false;
int ordc_row = 0;
for (ordc_row = ordc.physical_rows(); ordc_row > 0; ordc_row = ordc_row--)
{
const TRiga_documento& rc = ordc[ordc_row];
if (rc.get_int(RDOC_IDRIGA) == daidriga)
{
if ((rc.get_long(RDOC_CODAGG1) != codfor) && (rc.get_long(RDOC_CODAGG2) != codfor))
kill = true;
break;
}
}
if (ordc_row <= 0)
kill = true;
if (kill)
ordf.destroy_row(nriga, true);
}
for(bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
{
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);
for(int i = ordf.physical_rows(); i >= 1 ; i--)
{
if (ordf[i].get("D") == "X")
ordf.destroy_row(i, true);
}
for (int i = 1; i <= ordf.physical_rows(); i++)
ordf[i].put(RDOC_NRIGA, i);
}
}
//ELABORA_ORDINI_CLIENTE: scorro il file ini e aggiungo alla tabella dei listini le righe mancanti
void TCrea_ordini_srm_app::elabora_ordini_cliente()
{
TConfig ini(_ini_name, "33");
TString4 para; para.format("%d", LF_DOC);
TConfig ini(_ini_name, para);
const char provv = ini.get_char(DOC_PROVV, para);
const int anno = ini.get_int(DOC_ANNO, para);
const TString& codnum = ini.get(DOC_CODNUM, para);
@ -462,7 +449,6 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
const bool delete_docs = ini.get(DOC_NOTE, para) == "DELETING";
TDoc_key dadoc(anno, codnum, ndoc, provv);
TDoc_key ordf;
TDocumento ordc(provv, anno, codnum, ndoc);
@ -479,7 +465,8 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
if (codfor1 > 0)
{
if(cerca_orf(dadoc, 0, codfor1, ordf))
TDoc_key ordf;
if (cerca_orf(dadoc, 0, codfor1, ordf))
{
if (delete_docs)
elimina_ordf(ordf, ca);
@ -491,8 +478,8 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
}
if (codfor2 > 0)
{
if(cerca_orf(dadoc, 0, codfor2, ordf))
TDoc_key ordf;
if (cerca_orf(dadoc, 0, codfor2, ordf))
{
if (delete_docs)
elimina_ordf(ordf, ca);
@ -538,11 +525,11 @@ bool TCrea_ordini_srm_app::load_ini(bool check)
void TCrea_ordini_srm_app::main_loop() //definizione della member function main_loop, della classe TCrea_ordini_srm_app
{
TString sw = argv(2); sw.upper();
const bool chk_doc = sw == "-V";
open_files(LF_TAB, LF_TABCOM, LF_DOC, LF_RIGHEDOC, 0);
const TFixed_string sw = argv(2);
const bool chk_doc = sw.starts_with("-V", true);
// mostra un messaggio di errore se non riesce ad aprire il file richiesto
if (load_ini(chk_doc))
{

File diff suppressed because it is too large Load Diff