Patch level : 10.0 109

Files correlati     :
Ricompilazione Demo : [ ]
Commento           :

Riportata la versione 3.2 1208


git-svn-id: svn://10.65.10.50/trunk@17104 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2008-08-27 11:32:19 +00:00
parent bf646b21c5
commit 330e7883e0
5 changed files with 857 additions and 291 deletions

View File

@ -1,6 +1,4 @@
#include <xvt.h>
#include <checks.h>
#include <diction.h>
#include "or1.h"
@ -10,18 +8,15 @@ int main(int argc,char** argv)
switch (n)
{
case 0:
or1100(argc,argv); break; // stampe ordini
case 1:
or1200(argc,argv); break; // stampa dettaglio disponibilita' articoli
case 2:
or1300(argc,argv); break; // stampa statistiche sui tempi di consegna
case 3:
or1400(argc,argv); break; // generazione orini a fornitore
or1400(argc,argv); break; // generazione ordini a fornitore
default:
error_box(TR("Errore - uso : %s -{0|1|2|3}"), argv[0]);
or1100(argc,argv); break; // stampe ordini
}
exit(0);
return 0;
}

View File

@ -1,27 +1,34 @@
// Stampa dettaglio disponibilita' articoli
#include <applicat.h>
#include <automask.h>
#include <printer.h>
#include <recset.h>
#include <tabutil.h>
#include <colors.h>
#include <defmask.h>
#include <execp.h>
#include <progind.h>
#include <reprint.h>
#include <utility.h>
#include "orlib.h"
#include "or1400a.h"
#include "../cg/cglib01.h"
#include "../mg/mglib.h"
#include "../ve/velib.h"
#include "../mg/anamag.h"
#include "../ve/velib07.h"
#include <clifo.h>
#include <cfven.h>
static TString8 __codmag;
static int __codes;
///////////////////////////////////////////////////////////
// TArticoli_recordset
///////////////////////////////////////////////////////////
class TArticoli_recordset : public TISAM_recordset
{
bool _sottoscorta;
static TString8 __codmag;
static int __codes;
bool _sottoscorta;
protected:
static bool filtra_sottoscorta(const TRelation* rel);
@ -32,60 +39,118 @@ public:
virtual ~TArticoli_recordset() {}
};
TString8 TArticoli_recordset::__codmag;
int TArticoli_recordset::__codes;
bool TArticoli_recordset::filtra_sottoscorta(const TRelation* rel)
{
((TRelation *)rel)->save_status();
const TString codart = rel->curr(LF_ANAMAG).get(ANAMAG_CODART);
((TRelation*)rel)->save_status();
const char* codart = rel->curr(LF_ANAMAG).get(ANAMAG_CODART);
TArticolo_giacenza artgiac(codart);
const real giac = artgiac.giacenza_anno(__codmag, NULL, __codes);
const bool ok = giac < artgiac.scorta_minima(__codmag, NULL, __codes);
((TRelation *)rel)->restore_status();
((TRelation*)rel)->restore_status();
return ok;
}
TCursor* TArticoli_recordset::cursor() const
{
TCursor * c = TISAM_recordset::cursor();
TCursor* c = TISAM_recordset::cursor();
if (c != NULL && _sottoscorta)
c->set_filterfunction(filtra_sottoscorta);
return c;
}
///////////////////////////////////////////////////////////
// TConsumi_report
///////////////////////////////////////////////////////////
class TConsumi_report : public TDocument_report
{
protected:
virtual bool use_mask() { return false; }
public:
TConsumi_report();
};
TConsumi_report::TConsumi_report()
{
load("or1400a");
}
///////////////////////////////////////////////////////////
// TGenera_ordini_mask
///////////////////////////////////////////////////////////
class TGenera_ordini_mask : public TAutomask
{
TString _anamag_query;
TString _doc_filter;
int _days_interval;
bool _filter_changed;
private:
void serialize(bool bSave);
void load_user_defs();
void update_sheet();
void update_orders();
protected:
virtual bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
virtual void next_page(int p);
public:
void update_sheet();
TGenera_ordini_mask();
~TGenera_ordini_mask();
};
///////////////////////////////////////////////////////////
// TCreazione_ordini
///////////////////////////////////////////////////////////
class TCreazione_ordini : public TSkeleton_application
{
TGenera_ordini_mask* _mask;
protected:
TString_array _userfld;
void generate_orders();
public:
virtual bool create();
virtual void main_loop();
virtual bool destroy();
virtual void print();
void print_doc(const TRectype & doc);
};
inline TCreazione_ordini & capp() { return (TCreazione_ordini &) main_app();}
///////////////////////////////////////////////////////////
// TGenera_ordini_mask
///////////////////////////////////////////////////////////
void TGenera_ordini_mask::update_sheet()
{
TSheet_field & sf = sfield(F_ARTICLES);
TWait_cursor hourglass;
const TDate oggi(TODAY);
TSheet_field& sf = sfield(F_ARTICLES);
TEsercizi_contabili esc;
TString query(_anamag_query);
TString16 grmerc(get(F_GRMERC));
const int pos = query.find("KEY ");
TArticolo_giacenza art;
TString8 codmag(get(F_MAG));
const TDate data(TODAY);
const int anno = data.year();
int anno = get_int(F_ANNO);
if (anno <= 0)
anno = oggi.year();
codmag.left_just(3);
codmag << get(F_DEP);
@ -103,7 +168,7 @@ void TGenera_ordini_mask::update_sheet()
}
else
if (pos > 0)
query[pos + 4] = '1';
query[pos + 4] = '2';
TString select;
@ -121,8 +186,7 @@ void TGenera_ordini_mask::update_sheet()
select << "(UPPER(" << ANAMAG_DESCR << ")?=UPPER(\"" << desart << "\"))";
}
const TString & desagg = get(F_SDESAGG);
const TString& desagg = get(F_SDESAGG);
if (desagg.full())
{
if (select.full())
@ -130,9 +194,7 @@ void TGenera_ordini_mask::update_sheet()
select << "(UPPER(" << ANAMAG_DESCRAGG << ")?=UPPER(\"" << desagg << "\"))";
}
const TString & codforn = get(F_SCODFOR);
const TString& codforn = get(F_SCODFOR);
if (codforn.full())
{
if (select.full())
@ -140,7 +202,7 @@ void TGenera_ordini_mask::update_sheet()
select << "(" << ANAMAG_CODFORN << "==\"" << codforn << "\")";
}
const TString & ragsoc = get(F_SRAGSOC);
const TString& ragsoc = get(F_SRAGSOC);
if (ragsoc.full())
{
@ -169,14 +231,14 @@ void TGenera_ordini_mask::update_sheet()
}
TArticoli_recordset recset(query, get_bool(F_SOTTOSCORTA), esc.date2esc(TDate(TODAY)), get(F_MAG));
TArticoli_recordset recset(query, get_bool(F_SOTTOSCORTA), esc.date2esc(oggi), get(F_MAG));
TVariant var ;
var = grmerc;
recset.set_var("#GRMERC", var);
var = user();
recset.set_var("#USER", var);
TString8 codes; codes.format("%04d", esc.date2esc(TDate(TODAY)));
TString8 codes; codes.format("%04d", esc.date2esc(oggi));
int i = 0;
@ -217,19 +279,69 @@ void TGenera_ordini_mask::update_sheet()
row.add(disp.string(), sf.cid2index(F_DISPON));
sf.check_row(i++);
}
sf.force_update();
}
void TGenera_ordini_mask::update_orders()
{
TWait_cursor hourglass;
TSheet_field& sh = sfield(F_ORDERS);
sh.destroy();
TString query;
query << "USE RDOC\n";
query << "SELECT (CODARTMAG!=\"\")&&(CODCMS==#CODCMS)"
<< "&&(BETWEEN(33.STATO,#DASTATO,#ASTATO))\n";
query << "JOIN ANAMAG INTO CODART==CODART\n";
query << "JOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC\n";
query << "JOIN CLIFO TO DOC INTO TIPOCF=\"F\" CODCF==CODCF\n";
query << "FROM CODNUM=#CODNUM ANNO=#DAANNO\n";
query << "TO CODNUM=#CODNUM ANNO=#ADANNO\n";
const long anno = get_int(F_ANNO);
TISAM_recordset orders(query);
orders.set_var("#DASTATO", TVariant(get(F_DASTATO)));
orders.set_var("#ASTATO", TVariant(get(F_ASTATO)));
orders.set_var("#CODCMS", TVariant(get(F_CDCT)));
orders.set_var("#CODNUM", TVariant(get(F_CODNUM)));
orders.set_var("#DAANNO", TVariant(anno-2L));
orders.set_var("#ADANNO", TVariant(anno));
TMask& m = sh.sheet_mask();
TRelation& rel = *orders.cursor()->relation();
for (bool ok = orders.move_first(); ok; ok = orders.move_next())
{
TToken_string& row = sh.row(-1);
FOR_EACH_MASK_FIELD(m, i, f)
{
const TFieldref* fr = f->field();
if (fr != NULL)
row.add(fr->read(rel));
}
const int nrow = sh.items()-1;
switch (row.get_int(2))
{
case 1: sh.set_back_and_fore_color(NORMAL_BACK_COLOR, NORMAL_COLOR, nrow); break;
case 2: sh.set_back_and_fore_color(REQUIRED_BACK_COLOR, NORMAL_COLOR, nrow); break;
default: sh.set_back_and_fore_color(DISABLED_BACK_COLOR, DISABLED_COLOR, nrow); break;
}
}
sh.force_update();
}
void TGenera_ordini_mask::next_page(int p)
{
TAutomask::next_page(p);
if (_filter_changed)
if (_filter_changed)
{
TSheet_field & sf = sfield(F_ARTICLES);
if (win() == sf.parent())
TSheet_field& sf = sfield(F_ARTICLES);
if (xvt_scr_get_focus_vobj() == sf.parent())
{
update_sheet();
sf.force_update();
_filter_changed = false;
}
}
@ -238,16 +350,19 @@ void TGenera_ordini_mask::next_page(int p)
bool TGenera_ordini_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
{
TSheet_field& sht = (TSheet_field&)o;
switch(e)
{
case se_query_del:
case se_query_add:
return false;
break;
default:
break;
case se_query_del:
case se_query_add:
return false;
case fe_init:
if (o.dlg() == F_ARTICLES)
update_sheet();
else
update_orders();
break;
default:
break;
}
return true;
}
@ -257,26 +372,131 @@ bool TGenera_ordini_mask::on_field_event(TOperable_field& o, TField_event e, lon
bool ok = true;
switch (o.dlg())
{
case F_GRMERC:
case F_SGRMERC:
case F_SOTTOSCORTA:
case F_SCODART:
case F_SDESART:
case F_SDESAGG:
case F_SCODFOR:
case F_SRAGSOC:
if (e == fe_modify)
_filter_changed = true;
break;
default:
break;
case F_GRMERC:
case F_SGRMERC:
case F_SOTTOSCORTA:
case F_SCODART:
case F_SDESART:
case F_SDESAGG:
case F_SCODFOR:
case F_SRAGSOC:
if (e == fe_modify)
_filter_changed = true;
break;
case F_ANNO:
if (e == fe_init && o.empty())
{
const TDate oggi(TODAY);
TString4 anno; anno << oggi.year();
o.set(anno);
}
if (e == fe_modify)
_filter_changed = true;
// continue
case F_DASTATO:
case F_ASTATO:
if (e == fe_modify)
update_orders();
break;
case DLG_PRINT:
if (e == fe_button)
{
TConsumi_report cr;
cr.mask2report(*this);
TReport_book book;
book.add(cr);
book.print_or_preview();
ok = false; // Non uscire
}
break;
case DLG_PRINTDOC:
if (e == fe_button)
{
TString query;
query << "USE 33 ";
if (_doc_filter.full())
query << "SELECT " << _doc_filter; // CODCMS=#CODCMS\n"
query << "\n"
<< "JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF\n"
<< "FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM\n"
<< "TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM";
TISAM_recordset rset(query);
rset.set_var("#CODCMS", TVariant(get(F_CDCT)));
rset.set_var("#ANNO", TVariant(get(F_ANNO)));
rset.set_var("#CODNUM", TVariant(get(F_CODNUM)));
TCursor* c = rset.cursor();
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", "Selezione Documenti",
"@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50",0,1);
sht.uncheck(-1);
if (sht.run())
{
const int items = c->items();
for (*c = 0L; c->pos() < items; ++(*c)) if (sht.checked(c->pos()))
capp().print_doc(c->curr());
}
ok = false; // Non uscire
}
break;
case DLG_DELREC:
if (e == fe_button)
{
TString query;
TString select;
query << "USE 33";
if (_doc_filter.full())
select << "(" << _doc_filter << ')'; // CODCMS=#CODCMS\n"
if (_days_interval > 0)
{
TDate datalim(TODAY);
datalim -= _days_interval;
if (select.full())
select << "&&";
select << "(STR(NUM(ANSI(DATADOC))>" << datalim.date2ansi() << "))";
}
if (select.full())
query << " SELECT " << select;
query << "\n"
<< "JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF\n"
<< "FROM PROVV=D ANNO=#ANNO CODNUM=#CODNUM\n"
<< "TO PROVV=D ANNO=#ANNO CODNUM=#CODNUM";
TISAM_recordset rset(query);
rset.set_var("#CODCMS", TVariant(get(F_CDCT)));
rset.set_var("#ANNO", TVariant(get(F_ANNO)));
rset.set_var("#CODNUM", TVariant(get(F_CODNUM)));
TCursor* c = rset.cursor();
TCursor_sheet sht(c, " |CODNUM|NDOC|DATADOC|DATACONS|CODCF|20->RAGSOC", "Selezione Documenti",
"@1|Ordine@6|Numero\nDoc.@7|Data\nDoc.@10|Data\nConsegna@10|Fornitore|Ragione Sociale@50",0,1);
sht.uncheck(-1);
if (sht.run() && sht.checked() > 0 && yesno_box("Si desidera cancellare %d documenti", sht.checked()))
{
const int items = c->items();
c->freeze();
for (*c = 0; c->pos() < items; ++(*c)) if (sht.checked(c->pos()))
{
TDocumento doc(c->curr());
doc.remove();
}
}
ok = false; // Non uscire
}
break;
default:
if (o.is_kind_of(CLASS_SHEET_FIELD))
ok = on_sheet_event(o, e, jolly);
break;
}
return ok;
}
void TGenera_ordini_mask::serialize(bool bSave)
{
const char* defpar = "or";
const char* const defpar = "or";
TConfig ini(CONFIG_DITTA, defpar);
for (int i = fields()-1; i >= 0; i--)
{
@ -294,7 +514,7 @@ void TGenera_ordini_mask::serialize(bool bSave)
void TGenera_ordini_mask::load_user_defs()
{
const char* defpar = "or";
const char* const defpar = "or";
TConfig ini(CONFIG_USER, defpar);
for (int i = fields()-1; i >= 0; i--)
{
@ -313,22 +533,27 @@ void TGenera_ordini_mask::load_user_defs()
}
TGenera_ordini_mask::TGenera_ordini_mask()
: TAutomask("or1400a"), _filter_changed(false)
: TAutomask("or1400a"), _filter_changed(false)
{
serialize(false);
load_user_defs();
TConfig c(CONFIG_DITTA);
TConfig c(CONFIG_DITTA);
_anamag_query = c.get("OR14_QUERY");
if (_anamag_query.blank())
_anamag_query = "USE ANAMAG KEY 1\nJOIN UMART INTO CODART==CODART NRIGA==1\nJOIN CLIFO INTO TIPOCF==\"F\" CODCF==CODFORN";
{
_anamag_query = "USE ANAMAG KEY 2\nJOIN UMART INTO CODART==CODART NRIGA==1";
_anamag_query << "\nJOIN CLIFO INTO TIPOCF==\"F\" CODCF==CODFORN";
}
else
_anamag_query = esc(_anamag_query );
_anamag_query = esc(_anamag_query);
TSheet_field & sh = sfield(F_ARTICLES);
TMask & sh_mask = sh.sheet_mask();
_doc_filter = c.get("OR14_FILTER");
if (_doc_filter.empty() && !field(F_CDCT).empty())
_doc_filter = "CODCMS=#CODCMS"; // Utile al Cigno
_days_interval = c.get_int("OR14_DAYS");
TSheet_field& sh = sfield(F_ARTICLES);
TMask& sh_mask = sh.sheet_mask();
TString prompt;
for (int i = 1; i <= 10; i++)
@ -353,191 +578,259 @@ TGenera_ordini_mask::TGenera_ordini_mask()
TGenera_ordini_mask::~TGenera_ordini_mask()
{
serialize(true);
// serialize(true);
}
class TCreazione_ordini : public TSkeleton_application
{
TString_array _userfld;
void generate_orders(TGenera_ordini_mask & mask);
protected:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
public:
TCreazione_ordini() {};
virtual ~TCreazione_ordini() {};
};
///////////////////////////////////////////////////////////
// TCreazione_ordini
///////////////////////////////////////////////////////////
bool TCreazione_ordini::create()
{
open_files(LF_DOC, LF_RIGHEDOC, LF_CONDV, LF_RCONDV, LF_ANAMAG, LF_SCONTI, LF_UMART, LF_DESLIN, LF_CODCORR,
LF_TAB, LF_TABCOM, LF_CLIFO, LF_CFVEN, LF_INDSP, LF_OCCAS, LF_PCON, LF_MOV, LF_STOMAG,
LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
TConfig c(CONFIG_DITTA);
TConfig c(CONFIG_DITTA);
for (int i = 0; i < 10; i++ )
_userfld.add(c.get("USERFLD", NULL, i + 1), i);
_mask = new TGenera_ordini_mask;
return TSkeleton_application::create();
}
void TCreazione_ordini::generate_orders(TGenera_ordini_mask & mask)
bool TCreazione_ordini::destroy()
{
TSheet_field & sf = mask.sfield(F_ARTICLES);
TAssoc_array orders;
const TDate datadoc(TODAY);
const TString16 codnum(mask.get(F_CODNUM));
const TString16 tipodoc(mask.get(F_TIPODOC));
const TString8 tipo_prezzo(mask.get(F_PREZZO));
long minforn = 999999L;
delete _mask;
return TSkeleton_application::destroy();
}
void TCreazione_ordini::print()
{
_mask->field(DLG_PRINT).on_hit();
}
void TCreazione_ordini::print_doc(const TRectype & doc)
{
const TTipo_documento tipo(doc.get(DOC_TIPODOC));
TFilename rep(tipo.main_print_profile());
rep.ext("rep");
TString commandline;
if (rep.custom_path()) // Esiste il nuovo report :-)
commandline = "ve1 -2";
else // Esiste il vecchio form :-(
commandline = "ve1 -0";
commandline << ' ' << doc.get(DOC_CODNUM) << ' ' << doc.get(DOC_ANNO) << ' ';
commandline << doc.get(DOC_PROVV) << ' ' << doc.get(DOC_NDOC) << ' ' << doc.get(DOC_NDOC);
commandline << " D";
const int ncopie = tipo.ncopie();
if (ncopie > 0)
commandline << ' ' << ncopie;
TExternal_app interattivo( commandline );
interattivo.run();
}
void TCreazione_ordini::generate_orders()
{
TGenera_ordini_mask& mask = *_mask;
TSheet_field& sf = mask.sfield(F_ARTICLES);
long minforn = 999999L;
long maxforn = 0L;
const TString commessat = mask.get(F_CDCT);
const TString faset = mask.get(F_FSCT);
TString16 codmag(mask.get(F_MAG));
codmag.right_just(3);
codmag << mask.get(F_DEP);
TAssoc_array orders;
FOR_EACH_SHEET_ROW(sf, n, row)
if (sf.items() > 0)
{
const real qta(row->get(sf.cid2index(F_QTA)));
if (qta != ZERO)
{
const TString16 codforn(row->get(sf.cid2index(F_FORNITORE)));
const long cod = atoi(codforn);
const TDate datacons(row->get(sf.cid2index(F_DATACONS)));
TString16 key ; key. format ("F|%s", (const char *) codforn);
const TRectype & forn = cache().get(LF_CLIFO, key);
const TRectype & forven = cache().get(LF_CFVEN, key);
const TString16 codval(forn.get(CLI_CODVAL));
TString16 codiva(forven.get(CFV_ASSFIS));
const TString commessa = row->get(sf.cid2index(F_CDC));
const TString fase = row->get(sf.cid2index(F_FSC));
TDocumento * d = (TDocumento *)orders.objptr(codforn);
const TDate datadoc(TODAY);
const TString& codnum = mask.get(F_CODNUM);
const TString& tipodoc = mask.get(F_TIPODOC);
const TTipo_documento tipo(tipodoc);
if (d == NULL)
{
TTipo_documento tipo(tipodoc);
const bool ultimo_prezzo = mask.get(F_PREZZO) == "U";
const TString& commessat = mask.get(F_CDCT);
const TString& faset = mask.get(F_FSCT);
TString8 codmag(mask.get(F_MAG));
codmag.right_just(3);
codmag << mask.get(F_DEP);
d = new TDocumento('D', datadoc.year(), codnum, 0L);
d->put(DOC_TIPODOC, tipodoc);
d->put(DOC_TIPOCF, "F");
d->put(DOC_CODCF, codforn);
d->put(DOC_DATADOC, datadoc);
d->put(DOC_DATACONS, datacons);
d->put(DOC_CODVAL, codval);
d->put(DOC_CODLIN, forn.get(CLI_CODLIN));
d->put(DOC_CODPAG, forn.get(CLI_CODPAG));
d->put(DOC_CODABIA, forn.get(CLI_CODABI));
d->put(DOC_CODCABA, forn.get(CLI_CODCAB));
d->put(DOC_IBAN, forn.get(CLI_IBAN));
d->put(DOC_CODABIP, forven.get(CFV_CODABIPR));
d->put(DOC_CODCABP, forven.get(CFV_CODCABPR));
d->put(DOC_RAGGR, forven.get(CFV_RAGGDOC));
d->put(DOC_RAGGREFF, forven.get(CFV_RAGGEFF));
d->put(DOC_CODINDSP, forven.get(CFV_CODINDSP));
d->put(DOC_CODAG, forven.get(CFV_CODAG));
d->put(DOC_ZONA, forven.get(CFV_CODZONA));
d->put(DOC_CODSPMEZZO, forven.get(CFV_CODSPMEZZO));
d->put(DOC_CODPORTO, forven.get(CFV_CODPORTO));
d->put(DOC_CODNOTESP1, forven.get(CFV_CODNOTESP1));
d->put(DOC_CODNOTESP2, forven.get(CFV_CODNOTESP2));
d->put(DOC_CODNOTE, forven.get(CFV_CODNOTE));
d->put(DOC_CODVETT1, forven.get(CFV_CODVETT1));
d->put(DOC_CODVETT2, forven.get(CFV_CODVETT2));
d->put(DOC_CODVETT3, forven.get(CFV_CODVETT3));
d->put(DOC_PERCSPINC, forven.get(CFV_PERCSPINC));
d->put(DOC_ADDBOLLI, forven.get(CFV_ADDBOLLI));
d->put(DOC_CATVEN, forven.get(CFV_CATVEN));
d->put(DOC_CODLIST, forven.get(CFV_CODLIST));
d->put(DOC_CODCMS, commessat);
d->put(DOC_NOTE, mask.get(F_NOTE));
const TString & causmag = tipo.caus_mov();
d->put(DOC_CAUSMAG, causmag);
orders.add(codforn, d);
if (cod < minforn)
minforn = cod;
if (cod > maxforn)
maxforn = cod;
}
TString8 codmagc(mask.get(F_MAGC));
codmagc.right_just(3);
codmagc << mask.get(F_DEPC);
TRiga_documento & rdoc = d->new_row("01");
const TString codart(row->get(sf.cid2index(F_CODART)));
rdoc.put(RDOC_CODMAG, codmag);
rdoc.put(RDOC_CODART, codart);
rdoc.put(RDOC_CODARTMAG, codart);
rdoc.put(RDOC_CHECKED, "X");
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(F_DESCR)));
TProgind pi(sf.items(), TR("Generazione ordini"), true, true);
FOR_EACH_SHEET_ROW(sf, n, row)
{
if (!pi.setstatus(n))
break;
const real qta = row->get(sf.cid2index(F_QTA));
if (!qta.is_zero())
{
const TString8 codforn(row->get(sf.cid2index(F_FORNITORE)));
const long cod = atol(codforn);
TString8 key; key.format("F|%ld", cod);
const TRectype& forn = cache().get(LF_CLIFO, key);
const TDate datacons(row->get(sf.cid2index(F_DATACONS)));
const TString4 codval(forn.get(CLI_CODVAL));
const TRectype& forven = cache().get(LF_CFVEN, key);
const TString4 codiva(forven.get(CFV_ASSFIS));
const TString commessa = row->get(sf.cid2index(F_CDC));
const TString fase = row->get(sf.cid2index(F_FSC));
const TString descr_agg(row->get(sf.cid2index(F_DESCRAGG)));
TDocumento* d = (TDocumento*)orders.objptr(codforn);
if (d == NULL)
{
d = new TDocumento('D', datadoc.year(), codnum, 0L);
d->put(DOC_TIPODOC, tipodoc);
d->put(DOC_TIPOCF, "F");
d->put(DOC_CODCF, codforn);
d->put(DOC_DATADOC, datadoc);
d->put(DOC_DATACONS, datacons);
d->put(DOC_CODVAL, codval);
d->put(DOC_CODLIN, forn.get(CLI_CODLIN));
d->put(DOC_CODPAG, forn.get(CLI_CODPAG));
d->put(DOC_CODABIA, forn.get(CLI_CODABI));
d->put(DOC_CODCABA, forn.get(CLI_CODCAB));
d->put(DOC_IBAN, forn.get(CLI_IBAN));
d->put(DOC_CODABIP, forven.get(CFV_CODABIPR));
d->put(DOC_CODCABP, forven.get(CFV_CODCABPR));
d->put(DOC_RAGGR, forven.get(CFV_RAGGDOC));
d->put(DOC_RAGGREFF, forven.get(CFV_RAGGEFF));
d->put(DOC_CODINDSP, forven.get(CFV_CODINDSP));
d->put(DOC_CODAG, forven.get(CFV_CODAG));
d->put(DOC_ZONA, forven.get(CFV_CODZONA));
d->put(DOC_CODSPMEZZO, forven.get(CFV_CODSPMEZZO));
d->put(DOC_CODPORTO, forven.get(CFV_CODPORTO));
d->put(DOC_CODNOTESP1, forven.get(CFV_CODNOTESP1));
d->put(DOC_CODNOTESP2, forven.get(CFV_CODNOTESP2));
d->put(DOC_CODNOTE, forven.get(CFV_CODNOTE));
d->put(DOC_CODVETT1, forven.get(CFV_CODVETT1));
d->put(DOC_CODVETT2, forven.get(CFV_CODVETT2));
d->put(DOC_CODVETT3, forven.get(CFV_CODVETT3));
d->put(DOC_PERCSPINC, forven.get(CFV_PERCSPINC));
d->put(DOC_ADDBOLLI, forven.get(CFV_ADDBOLLI));
d->put(DOC_CATVEN, forven.get(CFV_CATVEN));
d->put(DOC_CODLIST, forven.get(CFV_CODLIST));
d->put(DOC_CODCMS, commessat);
d->put(DOC_NOTE, mask.get(F_NOTE));
if (descr_agg.full())
{
rdoc.put(RDOC_DESCLUNGA, "X");
rdoc.put(RDOC_DESCEST, descr_agg);
}
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(F_UM)));
rdoc.put(RDOC_QTA, qta);
rdoc.put(RDOC_DATACONS, datacons);
const TRectype & articolo = cache().get(LF_ANAMAG, codart);
TPrice prezzo;
if (tipo_prezzo == "U")
prezzo = articolo.get_real(ANAMAG_ULTCOS1);
else
prezzo = articolo.get_real(ANAMAG_COSTSTD);
prezzo.change_value(codval);
rdoc.put(RDOC_PREZZO, prezzo.get_num());
if (codiva.full())
rdoc.put(RDOC_CODIVA, codiva);
else
rdoc.put(RDOC_CODIVA, articolo.get(ANAMAG_CODIVA));
rdoc.put(RDOC_CODCMS, commessa);
rdoc.put(RDOC_FASCMS, fase);
for (int i = 0; i < 10 ; i++)
if (_userfld.row(i).full())
rdoc.put(_userfld.row(i), mask.get(F_USER1 + i));
const TString& causmag = tipo.caus_mov();
d->put(DOC_CAUSMAG, causmag);
orders.add(codforn, d);
if (cod < minforn)
minforn = cod;
if (cod > maxforn)
maxforn = cod;
}
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
}
}
int cnt = 0;
for (long cod = minforn; cod <= maxforn; cod++)
{
TString16 key; key.format("%ld", cod);
TDocumento * d = (TDocumento *) orders.objptr(key);
TRiga_documento& rdoc = d->new_row("01");
const TString codart(row->get(sf.cid2index(F_CODART)));
rdoc.put(RDOC_CODMAG, codmag);
rdoc.put(RDOC_CODMAGC, codmagc);
rdoc.put(RDOC_CODART, codart);
rdoc.put(RDOC_CODARTMAG, codart);
rdoc.put(RDOC_CHECKED, "X");
rdoc.put(RDOC_DESCR, row->get(sf.cid2index(F_DESCR)));
if ( d != NULL)
{
d->write();
cnt++;
}
}
message_box("Attenzione sono stati generati %d documenti", cnt);
const TString descr_agg(row->get(sf.cid2index(F_DESCRAGG)));
if (descr_agg.full())
{
rdoc.put(RDOC_DESCLUNGA, "X");
rdoc.put(RDOC_DESCEST, descr_agg);
}
rdoc.put(RDOC_UMQTA, row->get(sf.cid2index(F_UM)));
rdoc.put(RDOC_QTA, qta);
rdoc.put(RDOC_DATACONS, datacons);
const TRectype& articolo = cache().get(LF_ANAMAG, codart);
TPrice prezzo;
if (ultimo_prezzo)
prezzo = articolo.get_real(ANAMAG_ULTCOS1);
else
prezzo = articolo.get_real(ANAMAG_COSTSTD);
prezzo.change_value(codval);
rdoc.put(RDOC_PREZZO, prezzo.get_num());
if (codiva.full())
rdoc.put(RDOC_CODIVA, codiva);
else
rdoc.put(RDOC_CODIVA, articolo.get(ANAMAG_CODIVA));
rdoc.put(RDOC_CODCMS, commessa);
rdoc.put(RDOC_FASCMS, fase);
for (int i = 0; i < 10 ; i++)
if (_userfld.row(i).full())
rdoc.put(_userfld.row(i), mask.get(F_USER1 + i));
rdoc.put(RDOC_CODAGG1, row->get(sf.cid2index(F_CODAGG1)));
rdoc.put(RDOC_CODAGG2, row->get(sf.cid2index(F_CODAGG2)));
}
}
}
if (orders.items() > 0)
{
TProgind pi(orders.items(), TR("Registrazione ordini"), true, true);
TString cmdline;
int cnt = 0;
TString8 key;
long mindoc = 0, maxdoc = 0;
for (long cod = minforn; cod <= maxforn; cod++)
{
key.format("%ld", cod);
TDocumento* d = (TDocumento*)orders.objptr(key);
if (d != NULL)
{
if (!pi.addstatus(1))
break;
if (d->write() == NOERR)
{
if (cmdline.blank())
{
const TTipo_documento& tipo = d->tipo();
TFilename rep(tipo.main_print_profile());
rep.ext("rep");
if (rep.custom_path()) // Esiste il nuovo report :-)
cmdline = "ve1 -2";
else // Esiste il vecchio form :-(
cmdline = "ve1 -0";
}
cnt++;
const long ndoc = d->get_long(DOC_NDOC);
if (mindoc <= 0 || ndoc < mindoc)
mindoc = ndoc;
if (ndoc > maxdoc)
maxdoc = ndoc;
}
}
}
if (yesno_box(TR("Sono stati generati %d documenti:\nSi desidera stamparli ora?"), cnt))
{
const TString& codnum = mask.get(F_CODNUM);
const TDate datadoc(TODAY);
const int anno = datadoc.year();
cmdline << " " << codnum << ' ' << anno << " D " << mindoc << ' ' << maxdoc;
TExternal_app prg(cmdline);
prg.run(true, true, false);
}
}
}
void TCreazione_ordini::main_loop()
{
TGenera_ordini_mask mask;
while (true)
{
mask.update_sheet();
if (mask.run() == K_ENTER)
generate_orders(mask);
else break;
}
}
bool TCreazione_ordini::destroy()
{
return TSkeleton_application::destroy();
while (_mask->run() == K_ENTER)
generate_orders();
}
int or1400(int argc, char** argv)

View File

@ -23,7 +23,17 @@
#define F_SDESAGG 171
#define F_SCODFOR 172
#define F_SRAGSOC 173
#define F_MAGC 174
#define F_DESMAGC 175
#define F_DEPC 176
#define F_DESDEPC 177
#define DLG_PRINTDOC 178
#define DLG_DELDOC 179
#define F_DASTATO 201
#define F_ASTATO 202
#define F_ANNO 203
#define F_ORDERS 210
#define F_CODART 101
#define F_DESCR 102
@ -52,3 +62,16 @@
#define F_USER8 125
#define F_USER9 126
#define F_USER10 127
#define S_DATADOC 101
#define S_NUMDOC 102
#define S_STATODOC 103
#define S_CODART 104
#define S_DESCART 105
#define S_UM 106
#define S_QTA 107
#define S_DATACONS 108
#define S_FORNITORE 109
#define S_RAGSOC 110
#define S_CDC 111
#define S_FSC 112

View File

@ -2,49 +2,57 @@
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 11 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -14 -11 ""
PROMPT -15 -11 "~Elabora"
PICTURE BMP_ELABORA
END
BUTTON DLG_INFO 10 2
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -24 -11 ""
PROMPT -25 -11 "~Stampa"
PICTURE BMP_PRINT
END
BUTTON DLG_HELP 10 2
BUTTON DLG_PRINTDOC 10 2
BEGIN
PROMPT -34 -11 ""
PROMPT -35 -11 "~Stampa Doc."
END
BUTTON DLG_QUIT 11 2
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -44 -11 ""
PROMPT -45 -11 "E~limina"
PICTURE BMP_DELREC
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -55 -11 ""
END
ENDPAGE
PAGE "Generazione Ordini fornitori" 0 0 0 0
PAGE "Ordini fornitori" 0 0 0 -3
SPREADSHEET F_ARTICLES 0 -2
SPREADSHEET F_ARTICLES
BEGIN
PROMPT 1 2 "Articoli"
ITEM "Codice@20"
PROMPT 1 1 "Articoli"
ITEM "Codice\nArticolo@20"
ITEM "Descrizione@50"
ITEM "UM"
ITEM "Quantità@15"
ITEM "Data Consegna"
ITEM "Codice Fornitore"
ITEM "Data\nConsegna@10"
ITEM "Codice\nFornitore"
ITEM "Ragione sociale@50"
ITEM "Commessa@20"
ITEM "Fase@10"
ITEM "Codice Aggiuntivo 1@20"
ITEM "Codice Aggiuntivo 2@20"
ITEM "Codice\nAggiuntivo 1@20"
ITEM "Codice\nAggiuntivo 2@20"
ITEM "Lead\ntime@5"
ITEM "Lotto minimo\ndi riordino@10"
ITEM "Descrizione aggiuntiva@50"
ITEM "Giacenza@15"
ITEM "Pezzi per conf.@15"
ITEM "Pezzi per\nconfezione@15"
ITEM "Disponibilità@15"
ITEM "Campo Aggiuntivo 1@15"
ITEM "Campo Aggiuntivo 2@15"
@ -60,17 +68,75 @@ END
ENDPAGE
PAGE "Note" -1 -1 80 20
PAGE "Stato Ordini" 0 0 0 -3
MEMO F_NOTE 70 16
STRING F_DASTATO 1
BEGIN
PROMPT 2 2 "Note "
FLAG "U"
PROMPT 1 1 "Dallo stato "
USE %STD
INPUT CODTAB F_DASTATO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DASTATO CODTAB
CHECKTYPE NORMAL
FIELD OR14_DASTATO
END
STRING F_ASTATO 1
BEGIN
PROMPT 21 1 "Allo stato "
COPY USE F_DASTATO
INPUT CODTAB F_ASTATO
COPY DISPLAY F_DASTATO
OUTPUT F_ASTATO CODTAB
CHECKTYPE NORMAL
FIELD OR14_ASTATO
END
NUMBER F_ANNO 4
BEGIN
PROMPT 51 1 "Anno "
CHECKTYPE REQUIRED
FIELD OR14_ANNO
END
SPREADSHEET F_ORDERS
BEGIN
PROMPT 1 2 "Ordini"
ITEM "Data\nOrdine@10"
ITEM "Numero\nOrdine"
ITEM "Stato\nOrdine"
ITEM "Codice\nArticolo@20"
ITEM "Descrizione@50"
ITEM "UM"
ITEM "Quantità@15"
ITEM "Data di\nconsegna@10"
ITEM "Fornitore"
ITEM "Ragione sociale@50"
ITEM "Commessa@20"
ITEM "Fase@10"
FLAGS "D"
END
ENDPAGE
PAGE "Filtri" -1 -1 80 20
PAGE "Note" 0 0 0 -3
MEMO F_NOTE 70 -1
BEGIN
PROMPT 1 1 "Note "
FLAG "U"
END
ENDPAGE
PAGE "Filtri" 0 0 0 -3
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 1 "@bGruppo merceologico"
END
STRING F_GRMERC 3
BEGIN
@ -131,22 +197,27 @@ BEGIN
FIELD OR14_SSC
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 6 "@bCentro di costo / Commessa"
END
STRING F_CDCT 20
BEGIN
PROMPT 2 6 "CDC/Commessa "
PROMPT 2 7 "CDC/Commessa "
FLAGS "UZ"
USE CMS
INPUT CODTAB F_CDCT
DISPLAY "Codice@20" CODTAB
DISPLAY "Descrizione@70" S0
OUTPUT F_CDCT CODTAB
FILED OR14_CDCT
FIELD OR14_CDCT
CHECKTYPE NORMAL
END
STRING F_FSCT 10
BEGIN
PROMPT 50 6 "Fase "
PROMPT 50 7 "Fase "
FLAGS "UZ"
USE FSC
INPUT CODTAB F_FSCT
@ -157,14 +228,20 @@ BEGIN
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 9 "@bArticolo"
END
STRING F_SCODART 20
BEGIN
PROMPT 2 8 "Codice articolo "
PROMPT 2 10 "Codice "
END
STRING F_SDESART 50
BEGIN
PROMPT 2 10 "Descrizione "
PROMPT 2 11 "Descrizione "
END
STRING F_SDESAGG 50
@ -172,9 +249,16 @@ BEGIN
PROMPT 2 12 "Descrizione aggiuntiva "
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 14 "@bFornitore"
END
STRING F_SCODFOR 7
BEGIN
PROMPT 2 14 "Codice fornitore "
PROMPT 2 15 "Codice "
USE LF_CLIFO
INPUT TIPOCF "F"
INPUT CODCF F_SCODFOR
@ -190,7 +274,12 @@ END
ENDPAGE
PAGE "Parametri" -1 -1 80 20
PAGE "Parametri" 0 0 0 -3
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 1 "@bTipologia documento ordine"
END
STRING F_CODNUM 4
BEGIN
@ -219,7 +308,7 @@ END
STRING F_TIPODOC 4
BEGIN
PROMPT 2 4 "Tipo "
PROMPT 2 3 "Tipo "
USE %TIP
INPUT CODTAB F_TIPODOC
DISPLAY "Codice" CODTAB
@ -233,7 +322,7 @@ END
STRING F_DESTIPODOC 50
BEGIN
PROMPT 24 4 ""
PROMPT 24 3 ""
USE %TIP KEY 2
INPUT S0 F_DESTIPODOC
DISPLAY "Descrizione@50" S0
@ -242,9 +331,15 @@ BEGIN
CHECKTYPE SEARCH
END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 6 "@bMagazzino / Deposito"
END
STRING F_MAG 3
BEGIN
PROMPT 2 6 "Magazzino "
PROMPT 2 7 "Magazzino "
FLAGS "UG"
USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_MAG
@ -257,7 +352,7 @@ END
STRING F_DESMAG 50
BEGIN
PROMPT 24 6 ""
PROMPT 24 7 ""
USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAG
DISPLAY "Denominazione magazzino@50" S0
@ -292,9 +387,64 @@ BEGIN
CHECKTYPE SEARCH
END
STRING F_MAGC 3
BEGIN
PROMPT 2 9 "Magazzino "
FLAGS "UG"
USE MAG SELECT CODTAB[4,5]==""
INPUT CODTAB F_MAGC
DISPLAY "Codice " CODTAB[1,3]
DISPLAY "Denominazione mag.@50 " S0
OUTPUT F_MAGC CODTAB[1,3]
CHECKTYPE NORMAL
FIELD OR14_MAGC
END
STRING F_DESMAGC 50
BEGIN
PROMPT 24 9 ""
USE MAG KEY 2 SELECT CODTAB[4,5]==""
INPUT S0 F_DESMAGC
DISPLAY "Denominazione magazzino@50" S0
DISPLAY "Cod. magazzino" CODTAB[1,3]
DISPLAY "Cod. deposito" CODTAB[4,5]
OUTPUT F_MAGC CODTAB[1,3]
CHECKTYPE SEARCH
END
STRING F_DEPC 2
BEGIN
PROMPT 2 10 "Deposito "
FLAGS "U"
USE MAG SELECT (CODTAB[1,3]==#F_MAG)&&(CODTAB[4,5]!="")
INPUT CODTAB[1,3] F_MAGC
INPUT CODTAB[4,5] F_DEPC
DISPLAY "Codice " CODTAB
DISPLAY "Denominazione dep.@50 " S0
OUTPUT F_MAGC CODTAB[1,3]
OUTPUT F_DEPC CODTAB[4,5]
CHECKTYPE SEARCH
FIELD OR14_DEPC
END
STRING F_DESDEPC 50
BEGIN
PROMPT 24 10 ""
USE MAG KEY 2 SELECT (CODTAB[1,3]==#F_MAG)&&(CODTAB[4,5]!="")
INPUT S0 F_DESDEPC
COPY DISPLAY F_DESMAG
OUTPUT F_DEPC CODTAB[4,5]
CHECKTYPE SEARCH
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 14 "@bValorizzazione"
END
LIST F_PREZZO 15
BEGIN
PROMPT 2 10 "Prezzo "
PROMPT 2 16 "Prezzo "
ITEM "U|Ultimo Costo"
ITEM "S|Costo Standard"
FIELD OR14_TPR
@ -303,6 +453,20 @@ END
ENDPAGE
ENDMASK
TOOLBAR "" 0 -3 0 3
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Righe ordine" -1 -1 80 20
STRING F_CODART 20
@ -442,16 +606,6 @@ BEGIN
FLAGS "D"
END
BUTTON DLG_OK 11 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_CANCEL 11 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Campi Utente" -1 -1 80 20
@ -516,16 +670,112 @@ BEGIN
FLAGS "D"
END
BUTTON DLG_OK 11 2
ENDPAGE
ENDMASK
PAGE "Ordini" -1 -1 68 16
GROUPBOX DLG_NULL 66 3
BEGIN
PROMPT -12 -1 ""
PROMPT 1 0 "@bEstremi del documento"
END
BUTTON DLG_CANCEL 11 2
DATE S_DATADOC
BEGIN
PROMPT -22 -1 ""
PROMPT 2 1 "Data "
FIELD 33.DATADOC
END
NUMBER S_NUMDOC 6
BEGIN
PROMPT 30 1 "Numero "
FIELD NDOC
END
STRING S_STATODOC 1
BEGIN
PROMPT 57 1 "Stato "
FIELD 33.STATO
END
GROUPBOX DLG_NULL 66 5
BEGIN
PROMPT 1 3 "@bArticolo"
END
STRING S_CODART 20
BEGIN
PROMPT 2 4 "Codice "
FIELD CODART
END
STRING S_DESCART 50
BEGIN
PROMPT 2 5 "Descrizione "
FIELD 47.DESCR
END
STRING S_UM 2
BEGIN
PROMPT 2 6 "Quantità "
FLAGS "U"
FIELD UMQTA
END
NUMBER S_QTA 13 5
BEGIN
PROMPT 18 6 ""
FIELD QTA
END
DATA S_DATACONS
BEGIN
PROMPT 37 6 "Data di consegna "
FIELD DATACONS
END
GROUPBOX DLG_NULL 66 3
BEGIN
PROMPT 1 8 "@bFornitore"
END
NUMBER S_FORNITORE 6
BEGIN
PROMPT 2 9 ""
FIELD 33.CODCF
END
STRING S_RAGSOC 50
BEGIN
PROMPT 14 9 ""
FIELD 20.RAGSOC
END
GROUPBOX DLG_NULL 66 4
BEGIN
PROMPT 1 11 "@bCentro di costo/Commessa"
END
STRING S_CDC 20
BEGIN
PROMPT 2 12 "Codice "
FLAGS "UZ"
FIELD CODCMS
END
STRING S_FSC 10
BEGIN
PROMPT 2 13 "Fase "
FLAGS "UZ"
FIELD FASCMS
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -11 -1 ""
END
ENDPAGE
ENDMASK
ENDMASK

View File

@ -1,8 +1,13 @@
#ifndef __ORLIB_H
#define __ORLIB_H
#ifndef __FORM_H
#include <form.h>
#endif
#ifndef __MGLIB_H
#include "../mg/mglib.h"
#endif
class _TTotale_valuta : public TObject
{
@ -18,27 +23,27 @@ public:
// Form per la stampa ordini
class TOrdine_form : public TForm
{
int _level;
TString16
_codmag,
_livello;
bool _detail_mag, _detail_dep,
_giac_eff, _val_comp,
_normale; // Se TRUE e' una stampa normale, ovvero stampa ordini per cli/fo/agente etc.
int _level;
TString16 _codmag, _livello;
bool _detail_mag, _detail_dep,
_giac_eff, _val_comp,
_normale; // Se TRUE e' una stampa normale, ovvero stampa ordini per cli/fo/agente etc.
// Se FALE e' una stampa disponibilita' articoli
TArray* _date_array; // Do not delete: e' passato dall'applicazione
TArray _totdisp; // Array di elementi per la stampa disponibilita'
TCodgiac_livelli * _codgiac;
TArticolo_giacenza *_art_giac;
TAssoc_array _totvaluta;
TArray* _date_array; // Do not delete: e' passato dall'applicazione
TArray _totdisp; // Array di elementi per la stampa disponibilita'
TCodgiac_livelli * _codgiac;
TArticolo_giacenza *_art_giac;
TAssoc_array _totvaluta;
protected:
protected:
virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi
const int find_period(const TDate&);
public:
public:
bool genera_intestazione_supplementare(pagetype p, short y);
void set_options(int lev, bool mag, bool dep, bool giac_eff = FALSE, bool val_comp = FALSE, TArray* da = NULL)
{ _level = lev; _detail_mag = mag; _detail_dep = dep; _giac_eff = giac_eff; _val_comp = val_comp; _date_array = da; _normale = da == NULL;}
TOrdine_form(const char* name);
virtual ~TOrdine_form() ;
};