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:
parent
bf646b21c5
commit
330e7883e0
@ -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;
|
||||
}
|
||||
|
||||
|
735
or/or1400.cpp
735
or/or1400.cpp
@ -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)
|
||||
|
23
or/or1400a.h
23
or/or1400a.h
@ -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
|
||||
|
348
or/or1400a.uml
348
or/or1400a.uml
@ -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
|
||||
|
33
or/orlib.h
33
or/orlib.h
@ -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() ;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user