From 330e7883e04ad8ffdad3dbb8d01cd8889ffea1ce Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 27 Aug 2008 11:32:19 +0000 Subject: [PATCH] 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 --- or/or1.cpp | 9 +- or/or1400.cpp | 735 ++++++++++++++++++++++++++++++++++--------------- or/or1400a.h | 23 ++ or/or1400a.uml | 348 +++++++++++++++++++---- or/orlib.h | 33 ++- 5 files changed, 857 insertions(+), 291 deletions(-) diff --git a/or/or1.cpp b/or/or1.cpp index bf316eb00..d2bc75367 100755 --- a/or/or1.cpp +++ b/or/or1.cpp @@ -1,6 +1,4 @@ #include -#include -#include #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; } diff --git a/or/or1400.cpp b/or/or1400.cpp index 3a9515b29..6f57d1879 100755 --- a/or/or1400.cpp +++ b/or/or1400.cpp @@ -1,27 +1,34 @@ // Stampa dettaglio disponibilita' articoli + #include #include -#include -#include -#include +#include +#include +#include +#include +#include #include #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 #include -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) diff --git a/or/or1400a.h b/or/or1400a.h index 59c2523db..31c0b882b 100755 --- a/or/or1400a.h +++ b/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 diff --git a/or/or1400a.uml b/or/or1400a.uml index e19b4c9cc..3031f07a6 100755 --- a/or/or1400a.uml +++ b/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 \ No newline at end of file +ENDMASK diff --git a/or/orlib.h b/or/orlib.h index 2e21ffe79..d5770aec3 100755 --- a/or/orlib.h +++ b/or/orlib.h @@ -1,8 +1,13 @@ #ifndef __ORLIB_H #define __ORLIB_H +#ifndef __FORM_H #include +#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() ; };