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)
{
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;
}

View File

@ -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() );

View File

@ -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();