From a44a144cea44a3ce7885754a05a22cf93e8b3048 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 1 Aug 1997 09:20:02 +0000 Subject: [PATCH] Errori aga105, aga107, aga111, aga116 git-svn-id: svn://10.65.10.50/trunk@5013 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/clifor.cpp | 273 ------------------------------------------------- ve/sconti.cpp | 2 +- ve/velib03.cpp | 30 +++++- ve/velib06.cpp | 3 +- 4 files changed, 30 insertions(+), 278 deletions(-) diff --git a/ve/clifor.cpp b/ve/clifor.cpp index e2aea48a7..7bf00da60 100755 --- a/ve/clifor.cpp +++ b/ve/clifor.cpp @@ -137,277 +137,4 @@ TCli_for::~TCli_for() delete _ven_tipo; delete _ven_codice; } - -/* void TCli_for_vendite::update_mask( TMask& m, TMask & occas_mask, bool onload ) -{ - const TString16 codval(m.get(F_CODVAL)); - const TString16 datacambio(m.get(F_DATACAMBIO1)); - - // Setta i campi che appartengono al file LF_CLIFO - const bool occas = occasionale(); - - m.show(F_OCCASEDIT, occas); - // In forse per l'Occasionale, sicuri per il Normale - m.show(F_COFI, !occas); - m.show(F_STATOPAIVA, !occas); - m.show(F_PAIVA, !occas); - m.set(F_RAGSOC, get(CLI_RAGSOC)); - m.enable(F_RAGSOC, !occas); - - const TRectype & ven_rec = vendite(); - - if(!onload) - { - short pos = m.id2pos(F_CODVAL); - const TString & codval = get(CLI_CODVAL); - - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).set(codval); - pos = m.id2pos(F_CODVAL1); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).set(codval); - pos = m.id2pos(F_CODLIN); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).set(get(CLI_CODLIN)); - m.set(F_CODPAG, get(CLI_CODPAG)); - m.set(F_CODABIA, get(CLI_CODABI)); - m.set(F_CODCABA, get(CLI_CODCAB)); - // Setta i campi che appartengono al file LF_CFVEN - m.set(F_CODABIP, ven_rec.get(CFV_CODABIPR)); - m.set(F_CODCABP, ven_rec.get(CFV_CODCABPR)); - m.set(F_RAGGR, ven_rec.get(CFV_RAGGDOC)); - m.set(F_CODINDSP, ven_rec.get(CFV_CODINDSP)); - m.set(F_CODAG, ven_rec.get(CFV_CODAG)); - m.set(F_CODSPMEZZO, ven_rec.get(CFV_CODSPMEZZO)); - m.set(F_CODPORTO, ven_rec.get(CFV_CODPORTO)); - m.set(F_CODNOTESP1, ven_rec.get(CFV_CODNOTESP1)); - m.set(F_CODNOTESP2, ven_rec.get(CFV_CODNOTESP2)); - m.set(F_CODNOTE, ven_rec.get(CFV_CODNOTE)); - m.set(F_CODVETT1, ven_rec.get(CFV_CODVETT1)); - m.set(F_CODVETT2, ven_rec.get(CFV_CODVETT2)); - m.set(F_CODVETT3, ven_rec.get(CFV_CODVETT3)); - m.set(F_SPESEINC, ven_rec.get(CFV_PERCSPINC)); - m.set(F_ADDBOLLI, ven_rec.get(CFV_ADDBOLLI)); - m.set(F_CATVEN, ven_rec.get(CFV_CATVEN)); - pos = m.id2pos(F_CODLIST); - const TString & codlist = ven_rec.get(CFV_CODLIST); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).set(codlist); - pos = m.id2pos(F_CODLIST1); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).set(codlist); - if (m.id2pos(F_CODAG) >= 0 && m.field(F_CODAG).active()) - m.set(F_CODAG, ven_rec.get(CFV_CODAG)); - m.set(F_CODZON, ven_rec.get(CFV_CODZONA)); - m.set(F_RAGGR, ven_rec.get(CFV_RAGGDOC)); - } - if (occas) - { - m.reset(F_COFI); - m.reset(F_PAIVA); - m.reset(F_LOCALITACF); - m.set( F_OCFPI, occas_mask.get(O_CODICE)); - m.set( F_RAGSOC, occas_mask.get(O_RAGSOC)); - m.set( F_INDCF, occas_mask.get(O_INDIRIZZO)); - m.set( F_CIVCF, occas_mask.get(O_NUMERO)); - m.set( F_CAPCF, occas_mask.get(O_CAP)); - m.set( F_COMCF, occas_mask.get(O_COMUNE)); - m.set( F_STATOCF, occas_mask.get(O_STATO)); - } - else - { - occas_mask.reset(); - m.set(F_COFI, get(CLI_COFI)); - m.set(F_INDCF, get(CLI_INDCF)); - m.set(F_CIVCF, get(CLI_CIVCF)); - m.set(F_STATOPAIVA, get(CLI_STATOPAIV)); - m.set(F_PAIVA, get(CLI_PAIV)); - m.set(F_LOCALITACF, get(CLI_LOCCF)); - m.set(F_CAPCF, get(CLI_CAPCF)); - m.set(F_COMCF, get(CLI_COMCF)); - m.set(F_STATOCF, get(CLI_STATOCF)); - } - const TString16 newcodval(m.get(F_CODVAL)); - const TString16 newdatacambio(m.get(F_DATACAMBIO1)); - - short pos = m.id2pos(F_CAMBIO); - if ((pos >= 0) && (newcodval.empty() || newdatacambio.empty())) - m.fld(F_CAMBIO).reset(); - pos = m.id2pos(F_CODVAL); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - pos = m.id2pos(F_CODVAL1); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - pos = m.id2pos(F_DATACAMBIO1); - if (pos >= 0 && m.field(pos).active() && - (codval != newcodval || datacambio != newdatacambio)) - m.fld(pos).check(); - m.check_field(F_COMCF); - m.check_field(F_STATOCF); - m.check_field( F_CODPAG ); - pos = m.id2pos(F_CODLIN); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - m.check_field( F_CODCABA ); - pos = m.id2pos(F_CODLIST); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - pos = m.id2pos(F_CODLIST1); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - m.check_field( F_CODCABP ); - m.check_field( F_CODINDSP ); - pos = m.id2pos(F_CODAG); - if (pos >= 0 && m.fld(pos).active()) - m.fld(pos).check(); - m.check_field( F_CODSPMEZZO ); - m.check_field( F_CODPORTO ); - m.check_field( F_CODNOTESP1 ); - m.check_field( F_CODNOTESP2 ); - m.check_field( F_CODNOTE ); - m.check_field( F_CODVETT1 ); - m.check_field( F_CODVETT2 ); - m.check_field( F_CODVETT3 ); - m.check_field( F_CATVEN ); - m.check_field( F_CODZON ); - const bool gescontr = app().config_ditta().get_bool("GES", "ve", 2); - const bool contr_enabled = ven_rec.get_bool(CFV_GESTCONTR); - - m.enable(F_CODCONT1, contr_enabled && gescontr); - m.enable(F_CODCONT, contr_enabled && gescontr); - - if (!onload) - { - imposta_indirizzo_spedizione(m, occas_mask); - imposta_sconto_testa(m); - imposta_spese(m); - } -} - -void TCli_for::edita_occasionale( ) -{ - CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" ); - _occas_mask.run( ); -}; - -bool TCli_for::occas_code_handler(TMask_field& f, KEY key) -{ - if (key == K_TAB) - { - const char* code = f.get(); - if (*code) - { - TRelation occas(LF_OCCAS); - occas.lfile().put("CFPI", code); - if (occas.read(_isequal) == NOERR) - { - f.mask().autoload(occas); - f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni - f.mask().send_key(K_TAB, O_COMUNENAS); - } - } - } - return TRUE; -} - -void TCli_for_vendite::imposta_indirizzo_spedizione(TMask& m, TMask & occas_mask) -{ - const bool occas = occasionale(); - - m.enable( F_CODINDSP , !occas); - if (occas) - { - m.reset( F_CODINDSP); - m.set( F_RAGSOCSP, occas_mask.get(O_RAGSOC)); - m.set( F_INDSP, occas_mask.get(O_INDIRIZZO)); - m.set( F_CIVSP, occas_mask.get(O_NUMERO)); - // Sugli occasionali non c'è la località - m.reset( F_LOCALITASP); - m.set( F_CAPSP, occas_mask.get(O_CAP)); - m.set( F_COMSP, occas_mask.get(O_COMUNE)); - m.check_field(F_COMSP); - m.set( F_STATOSP, occas_mask.get(O_STATO)); - m.check_field(F_STATOSP); - } -} - -void TCli_for_vendite::imposta_sconto_testa( TMask& m ) -{ - TConfig & ditta = app().config_ditta(); - - const char tipogestione = ditta.get("GESSCO", "ve")[ 0 ]; - switch( tipogestione ) - { - case 'N': // Sconti non gestiti: pussa via! - break; - case 'P': // Percentuale su anagrafica cliente - m.set( F_SCONTOPERC, get(CLI_SCONTO)); - break; - case 'T': // Gestione tabella sconti - { - const TString16 codsconto(vendite().get(CFV_CODSCC)); - if (codsconto.not_empty()) - { - TTable sconti("%SCC"); - sconti.setkey(1); - sconti.zero(); - sconti.put("CODTAB", codsconto); - if (sconti.read( ) == NOERR) - m.set(F_SCONTOPERC, sconti.get("S1")); - } - } - break; - case 'A': // Gestione archivio sconti - { - TString16 cod; - const TRectype & ven_rec = vendite(); - TLocalisamfile sconti(LF_SCONTI ); - - sconti.setkey(1); - sconti.zero(); - sconti.put("TIPO", "I"); - if(ditta.get_bool("SCOKEY", "ve", 1)) - sconti.put("CODCAT", ven_rec.get(CFV_CATVEN)); - if(ditta.get_bool("SCOKEY", "ve", 2)) - cod = ven_rec.get(CFV_CODSCC); - else - cod = " "; - if( ditta.get_bool("SCOKEY", "ve", 3)) - cod << ven_rec.get(CFV_CODZONA); - else - cod << " "; - if( ditta.get_bool("SCOKEY", "ve", 4)) - cod << get(CLI_CODPAG); - sconti.put("CODART", cod); - if(sconti.read() == NOERR) - m.set(F_SCONTOPERC, sconti.get( "SCONTO")); - } - break; - default: - break; - } - return; -} - -void TCli_for_vendite::imposta_spese( TMask& m ) -{ - TSheet_field & sh = (TSheet_field &) m.field(F_SHEET); - TDocumento & doc = app().doc(); - - TString16 name("CODSP0"); - TString_array spese; - for (int i = 1; i <= 4; i++) - { - name.rtrim(1); name << i; - const TString16 s(get(name)); - - if (s.not_empty()) - spese.add(s); - } - m.autosave(*app().get_relation()); - doc.update_spese_aut(spese, FALSE, &sh); - sh.force_update(); -} -*/ diff --git a/ve/sconti.cpp b/ve/sconti.cpp index 2dfe2e637..63b71bdea 100755 --- a/ve/sconti.cpp +++ b/ve/sconti.cpp @@ -525,7 +525,7 @@ void TCond_vendita::ricerca(bool load_um_only, bool load_scagl_only) } } } - if (found_condv) + if (found_condv && _testa->is_running()) update_omaggi(load_scagl_only); } diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 90548f2cd..75c3dc5ff 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -666,7 +666,22 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const if (nuovo && re) // quindi ... re = FALSE; // ... non fare la rewrite - + + if (tipo().spese_aut() && !get_bool("SPESEUPD")) + { + TString16 name("CODSP0"); + TString_array spese; + TRectype & ven_rec = clifor().vendite(); + for (int i = 1; i <= 4; i++) + { + name.rtrim(1); name << i; + const TString16 s(ven_rec.get(name)); + + if (s.not_empty()) + spese.add(s); + } + ((TDocumento *)this)->update_spese_aut(spese); + } int err = NOERR; const TString80 occ_code(occas().get(OCC_CFPI)); @@ -1114,11 +1129,13 @@ void TDocumento::put_str(const char* fieldname, const char* val) } else { + if (strcmp(fieldname, "CODCF") == 0) + put("SPESEUPD", TRectype::get("CODCF") == v); TAuto_variable_rectype::put_str(fieldname, v); dirty_fields(); if (strcmp(fieldname, "SCONTOPERC") == 0) set_riga_sconto(); - } + } } void TDocumento::zero(const char * fieldname) @@ -1196,7 +1213,13 @@ TRectype & TDocumento::operator =(const char * r) void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, TSheet_field * sh) { - const bool interactive = sh != NULL; + const bool updated = get_bool("SPESEUPD"); + + if (updated) + return; + + const bool interactive = sh != NULL; + if (tipo().spese_aut()) { const int nrows = _rows.rows(); @@ -1271,5 +1294,6 @@ void TDocumento::update_spese_aut(TString_array & spese_aut, bool preserve_old, } } } + put("SPESEUPD", TRUE); } diff --git a/ve/velib06.cpp b/ve/velib06.cpp index a6a611745..9897a3adb 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -309,7 +309,8 @@ void TDocumento_mask::spese2mask(TCli_for & c) if (s.not_empty()) spese.add(s); } - autosave(get_relation()); + autosave(get_relation()); + doc().put("SPESEUPD", FALSE); doc().update_spese_aut(spese, FALSE, &sh); sh.force_update(); }