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
This commit is contained in:
guy 2009-11-19 15:59:14 +00:00
parent 6a712169e3
commit 2ab92d7bb0
3 changed files with 53 additions and 57 deletions

View File

@ -10,12 +10,12 @@ int main(int argc, char** argv)
switch (r) switch (r)
{ {
case 1: mg3200(argc,argv) ; break; // stampa disponibilitŕ .... case 1: mg3200(argc,argv); break; // stampa disponibilitŕ ....
case 2: mg3300(argc,argv) ; break; // stampa schede di magazzino case 2: mg3300(argc,argv); break; // stampa schede di magazzino
case 3: mg3400(argc,argv) ; break; // stampa report magazzino case 3: mg3400(argc,argv); break; // stampa report magazzino
case 4: mg3500(argc,argv) ; break; // stampa storico rimanenze case 4: mg3500(argc,argv); break; // stampa storico rimanenze
case 5: mg3600(argc,argv) ; break; // stampa etichette articoli case 5: mg3600(argc,argv); break; // stampa etichette articoli
default: mg3100(argc,argv) ; break; // stampa dati storici, giac e prezzi default: mg3100(argc,argv); break; // stampa dati storici, giac e prezzi
} }
return 0; return 0;
} }

View File

@ -14,7 +14,8 @@
#define VALUE_NOT_SET "~~" #define VALUE_NOT_SET "~~"
TCausale_magazzino& get_cau(const char* codcaus) TCausale_magazzino& get_cau(const char* codcaus)
{ {
/*
static TAssoc_array _c; static TAssoc_array _c;
TCausale_magazzino * caus = (TCausale_magazzino*) _c.objptr(codcaus); TCausale_magazzino * caus = (TCausale_magazzino*) _c.objptr(codcaus);
if (caus == NULL) if (caus == NULL)
@ -23,12 +24,14 @@ TCausale_magazzino& get_cau(const char* codcaus)
_c.add(codcaus, caus); _c.add(codcaus, caus);
} }
return *caus; return *caus;
*/
return cached_causale_magazzino(codcaus);
} }
class TForm_schedemag : public TForm_stampemg class TForm_schedemag : public TForm_stampemg
{ {
int _tolivgiac,_tolivart; int _tolivgiac,_tolivart;
TString16 _anno_prec; TString4 _anno_prec;
bool _magazzino_chiuso; bool _magazzino_chiuso;
bool _sottocatmer; bool _sottocatmer;
bool _sudd_mag; bool _sudd_mag;
@ -74,23 +77,15 @@ const char* TForm_schedemag::descr_tiposcheda() const
{ {
switch (_tiposcheda) switch (_tiposcheda)
{ {
case s_giac: case s_giac: return (TR("Giacenza"));
return (TR("Giacenza")); case s_acl: return (TR("A conto lavoro"));
case s_acl: case s_incl: return (TR("In conto lavoro"));
return (TR("A conto lavoro")); case s_prodc: return (TR("In produzione componenti"));
case s_incl: case s_prodf: return (TR("In produzione finiti"));
return (TR("In conto lavoro")); case s_ordc: return (TR("Ordinato clienti"));
case s_prodc: case s_ordf: return (TR("Ordinato fornitori"));
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: case s_acq:
default: default: break;
break;
} }
return ""; return "";
} }
@ -99,26 +94,18 @@ const char* TForm_schedemag::nomecampo_scheda() const
{ {
switch (_tiposcheda) switch (_tiposcheda)
{ {
case s_giac: case s_giac: return (MAG_GIAC);
return (MAG_GIAC); case s_acl: return (MAG_ACL);
case s_acl: case s_incl: return (MAG_INCL);
return (MAG_ACL); case s_prodc:return (MAG_PRODCOMP);
case s_incl: case s_prodf:return (MAG_PRODFIN);
return (MAG_INCL); case s_ordc: return (MAG_ORDC);
case s_prodc: case s_ordf: return (MAG_ORDF);
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_acq:
case s_ent: case s_ent:
case s_ven: case s_ven:
case s_usc: case s_usc:
default: default: break;
break;
} }
return ""; return "";
} }
@ -744,16 +731,22 @@ void TStampa_schede_mag::setprint_perarticoli()
int tolivelloart = m.get_int(F_TOLIVELLOART); int tolivelloart = m.get_int(F_TOLIVELLOART);
int tolivellogiac = m.get_int(F_TOLIVELLOGIAC); int tolivellogiac = m.get_int(F_TOLIVELLOGIAC);
TString sortexp; TString sortexp;
int tilde = 0x2;
switch (subordine) switch (subordine)
{ {
case 'C': case 'C':
_cur->setkey(1); sortexp = ANAMAG_CODART; {
darec.put("CODART", m.get(F_DAART)); _cur->setkey(1); sortexp = ANAMAG_CODART;
arec.put("CODART", m.get(F_AART)); darec.put(ANAMAG_CODART, m.get(F_DAART));
_form->setdett_perart(false, false, tolivelloart, tolivellogiac, const TString& aart = m.get(F_AART);
m.get_bool(F_SUDDIV_MAGAZZINI), arec.put(ANAMAG_CODART, aart);
m.get_bool(F_SUDDIV_DEPOSITI)); 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; break;
case 'D': case 'D':
_cur->setkey(2); sortexp = ANAMAG_DESCR; _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); TSortedfile *rmovmag= new TSortedfile(LF_RMOVMAG,aux,_form->rmov_sortexp(),filter,0x2);
darecr.put(RMOVMAG_CODART,darec.get(ANAMAG_CODART)); darecr.put(RMOVMAG_CODART,darec.get(ANAMAG_CODART));
arecr.put(RMOVMAG_CODART,arec.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) if (tiposcheda() != s_giac)
rmovmag->cursor().set_filterfunction(cau_filter); rmovmag->cursor().set_filterfunction(cau_filter);
_cur->relation()->replace(rmovmag,1, _form->rmov_joinexp() ); _cur->relation()->replace(rmovmag,1, _form->rmov_joinexp() );

View File

@ -3,17 +3,18 @@
#include "../cg/cglib01.h" #include "../cg/cglib01.h"
#include "../ve/veconf.h" #include "../ve/veconf.h"
#include "mglib.h" #include "mglib.h"
#include "mg4200.h" #include "mg4200.h"
#include "mg4200a.h" #include "mg4200a.h"
#include "mg4frm.h" #include "mg4frm.h"
const char * and_connect(const TString & expr) static const char* and_connect(const TString & expr)
{ {
return expr.full() ? "&&" : ""; return expr.full() ? "&&" : "";
} }
const char * or_connect(TString & expr) static const char* or_connect(TString & expr)
{ {
return expr.full() ? "||" : ""; 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 //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 //Memorizzando i records in un file temporaneo che avrà lo stesso tracciato di LF_MAG
TIsamtempfile * temp_mag = new TIsamtempfile(LF_MAG, "tmpmag"); TIsamtempfile * temp_mag = new TIsamtempfile(LF_MAG, "tmpmag");
TRectype darec(LF_ANAMAG), arec(LF_ANAMAG); 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; // aggiunto da cristina (far vedere a guy) insieme al parametro subordine
int ordine = 1; int tilde = 0x2; // aggiunto da guy (far vedere a cristina)
if (subordine == 'C') if (subordine == 'C')
{ {
darec.put(ANAMAG_CODART, m.get(F_DAART)); 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 else
if (subordine == 'D') if (subordine == 'D')
@ -545,7 +548,7 @@ TIsamtempfile * TStampa_inventario::calcola_giacenze(const bool giaceff, const b
} }
TRelation ana_rel(LF_ANAMAG); 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(); const TRecnotype items = ana_cur.items();
ana_cur.freeze(); ana_cur.freeze();