From 2ab92d7bb0e0eddf0f40f573edfe7cdf78496621 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 19 Nov 2009 15:59:14 +0000 Subject: [PATCH] Patch level : 10.0 526 Files correlati : mg3 mg4 Ricompilazione Demo : [ ] Commento : 0001188: stampa inventario + stampa schede segnalato per cliente sailog: la selezione di un articolo es. 1104 (loro base dati), e se richiesto il calcolo dell'inventario alla data, erroneamente il programma calcola anche i movimenti relativi agli articoli con la stessa radice (es. 1104006 e 1104007). l'errore si verifica sia sulla stampa dell'inventario che sulla stampa schede. git-svn-id: svn://10.65.10.50/trunk@19659 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- mg/mg3.cpp | 12 ++++---- mg/mg3300.cpp | 77 +++++++++++++++++++++++---------------------------- mg/mg4200.cpp | 21 ++++++++------ 3 files changed, 53 insertions(+), 57 deletions(-) diff --git a/mg/mg3.cpp b/mg/mg3.cpp index 98c732cc3..2df05f7fb 100755 --- a/mg/mg3.cpp +++ b/mg/mg3.cpp @@ -10,12 +10,12 @@ int main(int argc, char** argv) switch (r) { - case 1: mg3200(argc,argv) ; break; // stampa disponibilità .... - case 2: mg3300(argc,argv) ; break; // stampa schede di magazzino - case 3: mg3400(argc,argv) ; break; // stampa report magazzino - case 4: mg3500(argc,argv) ; break; // stampa storico rimanenze - case 5: mg3600(argc,argv) ; break; // stampa etichette articoli - default: mg3100(argc,argv) ; break; // stampa dati storici, giac e prezzi + case 1: mg3200(argc,argv); break; // stampa disponibilità .... + case 2: mg3300(argc,argv); break; // stampa schede di magazzino + case 3: mg3400(argc,argv); break; // stampa report magazzino + case 4: mg3500(argc,argv); break; // stampa storico rimanenze + case 5: mg3600(argc,argv); break; // stampa etichette articoli + default: mg3100(argc,argv); break; // stampa dati storici, giac e prezzi } return 0; } diff --git a/mg/mg3300.cpp b/mg/mg3300.cpp index 58a3f16d8..290ad0d98 100755 --- a/mg/mg3300.cpp +++ b/mg/mg3300.cpp @@ -14,7 +14,8 @@ #define VALUE_NOT_SET "~~" TCausale_magazzino& get_cau(const char* codcaus) -{ +{ + /* static TAssoc_array _c; TCausale_magazzino * caus = (TCausale_magazzino*) _c.objptr(codcaus); if (caus == NULL) @@ -23,12 +24,14 @@ TCausale_magazzino& get_cau(const char* codcaus) _c.add(codcaus, caus); } return *caus; + */ + return cached_causale_magazzino(codcaus); } class TForm_schedemag : public TForm_stampemg { int _tolivgiac,_tolivart; - TString16 _anno_prec; + TString4 _anno_prec; bool _magazzino_chiuso; bool _sottocatmer; bool _sudd_mag; @@ -74,23 +77,15 @@ const char* TForm_schedemag::descr_tiposcheda() const { switch (_tiposcheda) { - case s_giac: - return (TR("Giacenza")); - case s_acl: - return (TR("A conto lavoro")); - case s_incl: - return (TR("In conto lavoro")); - case s_prodc: - return (TR("In produzione componenti")); - case s_prodf: - return (TR("In produzione finiti")); - case s_ordc: - return (TR("Ordinato clienti")); - case s_ordf: - return (TR("Ordinato fornitori")); + case s_giac: return (TR("Giacenza")); + case s_acl: return (TR("A conto lavoro")); + case s_incl: return (TR("In conto lavoro")); + case s_prodc: return (TR("In produzione componenti")); + case s_prodf: return (TR("In produzione finiti")); + case s_ordc: return (TR("Ordinato clienti")); + case s_ordf: return (TR("Ordinato fornitori")); case s_acq: - default: - break; + default: break; } return ""; } @@ -99,26 +94,18 @@ const char* TForm_schedemag::nomecampo_scheda() const { switch (_tiposcheda) { - case s_giac: - return (MAG_GIAC); - case s_acl: - return (MAG_ACL); - case s_incl: - return (MAG_INCL); - case s_prodc: - return (MAG_PRODCOMP); - case s_prodf: - return (MAG_PRODFIN); - case s_ordc: - return (MAG_ORDC); - case s_ordf: - return (MAG_ORDF); + case s_giac: return (MAG_GIAC); + case s_acl: return (MAG_ACL); + case s_incl: return (MAG_INCL); + case s_prodc:return (MAG_PRODCOMP); + case s_prodf:return (MAG_PRODFIN); + case s_ordc: return (MAG_ORDC); + case s_ordf: return (MAG_ORDF); case s_acq: case s_ent: case s_ven: case s_usc: - default: - break; + default: break; } return ""; } @@ -744,16 +731,22 @@ void TStampa_schede_mag::setprint_perarticoli() int tolivelloart = m.get_int(F_TOLIVELLOART); int tolivellogiac = m.get_int(F_TOLIVELLOGIAC); TString sortexp; - + int tilde = 0x2; switch (subordine) { case 'C': - _cur->setkey(1); sortexp = ANAMAG_CODART; - darec.put("CODART", m.get(F_DAART)); - arec.put("CODART", m.get(F_AART)); - _form->setdett_perart(false, false, tolivelloart, tolivellogiac, - m.get_bool(F_SUDDIV_MAGAZZINI), - m.get_bool(F_SUDDIV_DEPOSITI)); + { + _cur->setkey(1); sortexp = ANAMAG_CODART; + darec.put(ANAMAG_CODART, m.get(F_DAART)); + const TString& aart = m.get(F_AART); + arec.put(ANAMAG_CODART, aart); + if (aart.blank() || cache().get(LF_ANAMAG, aart).empty()) + tilde = 0x0; + + _form->setdett_perart(false, false, tolivelloart, tolivellogiac, + m.get_bool(F_SUDDIV_MAGAZZINI), + m.get_bool(F_SUDDIV_DEPOSITI)); + } break; case 'D': _cur->setkey(2); sortexp = ANAMAG_DESCR; @@ -801,7 +794,7 @@ void TStampa_schede_mag::setprint_perarticoli() TSortedfile *rmovmag= new TSortedfile(LF_RMOVMAG,aux,_form->rmov_sortexp(),filter,0x2); darecr.put(RMOVMAG_CODART,darec.get(ANAMAG_CODART)); arecr.put(RMOVMAG_CODART,arec.get(ANAMAG_CODART)); - rmovmag->setregion(darecr,arecr,0x2); + rmovmag->setregion(darecr,arecr,tilde); if (tiposcheda() != s_giac) rmovmag->cursor().set_filterfunction(cau_filter); _cur->relation()->replace(rmovmag,1, _form->rmov_joinexp() ); diff --git a/mg/mg4200.cpp b/mg/mg4200.cpp index 02db5cf7a..4c12397ba 100755 --- a/mg/mg4200.cpp +++ b/mg/mg4200.cpp @@ -3,17 +3,18 @@ #include "../cg/cglib01.h" #include "../ve/veconf.h" + #include "mglib.h" #include "mg4200.h" #include "mg4200a.h" #include "mg4frm.h" -const char * and_connect(const TString & expr) +static const char* and_connect(const TString & expr) { return expr.full() ? "&&" : ""; } -const char * or_connect(TString & expr) +static const char* or_connect(TString & expr) { return expr.full() ? "||" : ""; } @@ -504,21 +505,23 @@ TIsamtempfile * TStampa_inventario::crea_tempmag(const bool valcomp) } -TIsamtempfile * TStampa_inventario::calcola_giacenze(const bool giaceff, const bool valcomp, const TDate & al, const char subordine) +TIsamtempfile* TStampa_inventario::calcola_giacenze(const bool giaceff, const bool valcomp, const TDate & al, const char subordine) { - //Scorre l'anagrafica di magazzino e calcola per ognuno la giacenza alla data indicata //Memorizzando i records in un file temporaneo che avrà lo stesso tracciato di LF_MAG TIsamtempfile * temp_mag = new TIsamtempfile(LF_MAG, "tmpmag"); TRectype darec(LF_ANAMAG), arec(LF_ANAMAG); - TMask & m = mask(); + TMask& m = mask(); - // aggiunto da cristina (far vedere a guy) insieme al parametro subordine - int ordine = 1; + int ordine = 1; // aggiunto da cristina (far vedere a guy) insieme al parametro subordine + int tilde = 0x2; // aggiunto da guy (far vedere a cristina) if (subordine == 'C') { darec.put(ANAMAG_CODART, m.get(F_DAART)); - arec.put(ANAMAG_CODART, m.get(F_AART)); + const TString& aart = m.get(F_AART); + arec.put(ANAMAG_CODART, aart); + if (aart.blank() || cache().get(LF_ANAMAG, aart).empty()) + tilde = 0x0; } else if (subordine == 'D') @@ -545,7 +548,7 @@ TIsamtempfile * TStampa_inventario::calcola_giacenze(const bool giaceff, const b } TRelation ana_rel(LF_ANAMAG); - TCursor ana_cur(&ana_rel, "", ordine, &darec, &arec, 0x2); + TCursor ana_cur(&ana_rel, "", ordine, &darec, &arec, tilde); const TRecnotype items = ana_cur.items(); ana_cur.freeze();