From 27eb98b510976b94ca7d2d5a16016143155b524f Mon Sep 17 00:00:00 2001 From: angelo Date: Thu, 25 Jun 1998 07:29:35 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : Prima versione delle stampe ordini: stampa per numero/data, per cli/fo, per agente, per Articolo git-svn-id: svn://10.65.10.50/trunk@6780 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- or/or1.cpp | 8 +- or/or1.h | 2 + or/or1.url | 10 +- or/or1100.cpp | 1017 ++++++++++++++++++++++++++++++++++++++++++++++++ or/or1100a.h | 68 ++++ or/or1100a.uml | 606 +++++++++++++++++++++++++++++ or/or1100b.frm | 566 +++++++++++++++++++++++++++ or/or1100c.frm | 590 ++++++++++++++++++++++++++++ or/or1100d.frm | 446 +++++++++++++++++++++ or/or1200.cpp | 36 ++ or/or1300.cpp | 36 ++ 11 files changed, 3381 insertions(+), 4 deletions(-) create mode 100755 or/or1100.cpp create mode 100755 or/or1100a.h create mode 100755 or/or1100a.uml create mode 100755 or/or1100b.frm create mode 100755 or/or1100c.frm create mode 100755 or/or1100d.frm create mode 100755 or/or1200.cpp create mode 100755 or/or1300.cpp diff --git a/or/or1.cpp b/or/or1.cpp index 9028ca418..560668f86 100755 --- a/or/or1.cpp +++ b/or/or1.cpp @@ -3,7 +3,7 @@ #include "or1.h" -const char* const usage = "Errore - uso : %s -{0}"; +const char* const usage = "Errore - uso : %s -{0|1|2}"; int main(int argc,char** argv) { @@ -12,7 +12,11 @@ int main(int argc,char** argv) switch (n) { case 0: - or1100(argc,argv); break; // stampe + 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 default: error_box(usage, argv[0]); } diff --git a/or/or1.h b/or/or1.h index c2b25b4b0..9fe662391 100755 --- a/or/or1.h +++ b/or/or1.h @@ -2,6 +2,8 @@ #define __OR1_H int or1100(int argc, char** argv); +int or1200(int argc, char** argv); +int or1300(int argc, char** argv); #endif // __OR1_H diff --git a/or/or1.url b/or/or1.url index 7a70bfdba..b0848c0b5 100755 --- a/or/or1.url +++ b/or/or1.url @@ -1,14 +1,20 @@ #include -/* or1 -0 Stampe */ +/* or1 -0 Stampe ordini */ MENU TASK_MENUBAR SUBMENU MENU_FILE "~File" -/* or1 -1 */ +/* or1 -1 Stampa dettaglio disponbilita' articoli*/ MENUBAR MENU_BAR(1) MENU MENU_BAR(1) SUBMENU MENU_FILE "~File" +/* or1 -2 Stampa statistiche sui tempi di consegna*/ +MENUBAR MENU_BAR(2) + +MENU MENU_BAR(2) + SUBMENU MENU_FILE "~File" + diff --git a/or/or1100.cpp b/or/or1100.cpp new file mode 100755 index 000000000..cbd5c855f --- /dev/null +++ b/or/or1100.cpp @@ -0,0 +1,1017 @@ +// Stampa ordini +#include +#include +#include +#include +#include +#include "../ve/velib.h" +#include "../mg/mglib.h" + +#include +#include +#include "or1100a.h" + +// Tipi di stampa per selezionare il form +enum tipo_stampa { + numero, // or1100a.frm + clifo, // or1100b.frm + agente, // or1100d.frm + articolo // or1100c.frm +}; + +// Tipi di ordinamento +enum tipo_ord { + num_doc, // ordinamento per numero documento + data_doc // ordinamento per data documento +}; + + +class _TTotale_valuta : public TObject +{ + real _totord, _totres; + int _secnum; +public: + real& totord() { return _totord;} + real& totres() { return _totres;} + int& secnum() { return _secnum;} + _TTotale_valuta () {}; +}; + +// Form per la stampa ordini +class TOrdine_form : public TForm +{ + int _level; + bool _detail_mag, _detail_dep; + TCodgiac_livelli * _codgiac; + TTable *_fcg; + TArticolo *_art; + TAssoc_array _totvaluta; + + protected: + virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi + public: + void set_options(int lev, bool mag, bool dep) { _level = lev; _detail_mag = mag; _detail_dep = dep;} + TOrdine_form(const char* name); + virtual ~TOrdine_form() ; +}; + +TOrdine_form::TOrdine_form(const char* name) : TForm(name) +{ + _art = new TArticolo; + _fcg = new TTable("FCG"); + _codgiac = new TCodgiac_livelli; +} + +TOrdine_form::~TOrdine_form() +{ + delete _art; + delete _fcg; + delete _codgiac; +} + +bool TOrdine_form::validate(TForm_item &cf, TToken_string &s) +{ + const TString code(s.get(0)); + + if (code == "_ORDINE") + { + TLocalisamfile& rdoc = cf.form().cursor()->file(LF_RIGHEDOC); + TLocalisamfile& doc = cf.form().cursor()->file(LF_DOC); + // Add custom messages here + // All the following messages takes 1 parameter: the field number to set + TString action(s.get(1)); + + if (action == "DESCRIZIONE") + { + // Scrive: Cod articolo/cod livello1/cod livello2/.../denominazione ultimo livello codifica /cod mag /cod dep + TString codart,livello, coddep, codmag; + codart = rdoc.get(RDOC_CODART); + if (_level > 0) + livello = rdoc.get(RDOC_LIVELLO); + if (livello.not_empty()) + { + for (int lev=1; lev <= _level; lev++) + { + if (!_codgiac->enabled(lev)) + continue; + const int starts = _codgiac->code_start(lev) -1; + const int length = _codgiac->code_length(lev); + codart << "/"; + codart << livello.mid(starts,length); + } + codart << " " << _codgiac->name(_level); + codart << " " << _codgiac->group_descr(livello,_level); + } + + codmag = rdoc.get(RDOC_CODMAG).left(3); + coddep = rdoc.get(RDOC_CODMAG).right(2); + if (_detail_mag && codmag.not_empty()) + codart << " Mag. " << codmag; + if (_detail_dep && coddep.not_empty()) + codart << " Dep. " << coddep; + + cf.set(codart); + } + else + if (action == "SELECTUM") + { + TString um(rdoc.get(RDOC_UMQTA)); + TString cur_um(cf.find_field("407").get()); + + if (cur_um.empty()) // Se l'unita' di misura non e' ancora stata settata prende quella principale + cf.set(um); + else + if (cur_um != um) // Se c'e' ma e' diversa dalla prec. allora setta l'unita' di misura su quella principale + if (_art->read(rdoc.get(RDOC_CODART)) == NOERR) + { + // Converte i totali q.ta evasa e ordinata nella unita' di misura principale + const real fc = _art->um().row(_art->find_um(cur_um)).get("FCONV"); + TForm_item& qo = cf.find_field("408"); + TForm_item& qe = cf.find_field("409"); + real qtaor(qo.get()); + real qtaev(qe.get()); + + qtaor *= fc; + qtaev *= fc; + qo.set(qtaor.string()); + qe.set(qtaev.string()); + + cf.set(_art->um().row(1).get("UM")); // UM principale + } + // hmmm.. TBI: + // Riga merce non a magazzino o non e' possibile reperire l'UM principale per art. + // non posso interrompere la sezione di stampa da qui, e neppure cambiare il raggruppamento... + // This seems to be a great dilemma... For now leave it as is: Somme dure e crude di quantita' + } + else + if (action == "CONVUM") // Converte cazzilli quantitativi nella unita' di misura corrente + { + TString um(rdoc.get(RDOC_UMQTA)); + TString cur_um(cf.find_field("407").get()); + + if (cur_um != um) + if (_art->read(rdoc.get(RDOC_CODART)) == NOERR) + { + const real fc = _art->um().row(_art->find_um(cur_um)).get("FCONV"); + real qt(cf.get()); + qt *= fc; + cf.set(qt.string()); + } + } + else + if (action == "VALTABLE") // Comandi per stampa riepilogo per valuta + { + TString subcommand(s.get(2)); + if (subcommand == "RESET") + { + _totvaluta.destroy(); + cf.find_field("TOTVAL1").disable(); + cf.find_field("TOTVAL2").disable(); + cf.find_field("TOTVAL3").disable(); + cf.find_field("TOTVAL4").disable(); + } + else + { + const int valute = _totvaluta.items(); + TString codval(doc.get(DOC_CODVAL)); + const bool is_key = _totvaluta.is_key(codval); + const bool is_new = !is_key && valute < 4; + + if (is_new) // Aggiunge l'elemento se non c'e' + _totvaluta.add(codval,(_TTotale_valuta*)new _TTotale_valuta,is_key); + // Controlla/stampa al massimo 4 valute + if (is_key || is_new) + { + _TTotale_valuta& tv = (_TTotale_valuta&)_totvaluta[codval]; + const bool is_valord = subcommand == "VALORD"; + real& r = is_valord ? tv.totord() : tv.totres(); + TString s_id; + int i_id; + + // Abilita la sezione corrispondente e setta i valori all'interno + if (!is_key) + { + TString16 sec_name = "TOTVAL"; + sec_name << valute+1; + tv.secnum() = valute+1; + cf.find_field(sec_name).enable(); + // Setta anche il codice valuta + i_id = 53 + valute*10; + s_id.format("%d",i_id); + cf.find_field(s_id).set(codval); + if (valute == 0) + { + i_id--; + s_id.format("%d",i_id); + cf.find_field(s_id).set("Totali"); + } + } + const int sn = tv.secnum(); + i_id = is_valord ? 55 : 56; + + i_id += (sn-1)*10; + s_id.format("%d",i_id); + r += ((real) cf.get()); // Somma il valore corrente + cf.find_field(s_id).set(r.string()); + } + } + } + //Ignore any other command + } + return TForm::validate(cf, s); +} + +// Applicazione di stampa + +class TStampa_ordini : public TSkeleton_application +{ + TMask * _m; + TOrdine_form * _frm; + TTable * _fcg; + tipo_stampa _tipo; + TCodgiac_livelli *_codgiac; + TString _codnum; + int _anno; + char _provv, _tipocf, + _TEA_ord, _TEA_rord; // Tipi ordini/righe 'T'utti/'E'vasi/'A'perti + tipo_ord _order; + bool _detail_rows, _detail_doc, _detail_cli, _detail_mag, _detail_dep; + int _detail_level; //0..4 0 = Articoli 4 = FCG #4 Maximum detail level + TString _from_age, _to_age, + _from_art, _to_art, + _from_mag, _to_mag, + _from_dep, _to_dep; + TString_array + _from_giac, _to_giac; + long _from_ndoc, _to_ndoc, + _from_cf, _to_cf; + TDate _from_date, _to_date, + _from_cons, _to_cons; + TArray _file; + +protected: + void open_files(int logicnum, ...); + static bool stato_handler(TMask_field& f, KEY k); + static bool detail_handler(TMask_field& f, KEY k); + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); + void filter_for_number(); + void filter_for_clifo_agent(); + void filter_for_articolo(); +public: + TStampa_ordini() {}; + virtual ~TStampa_ordini() {}; +}; + +inline TStampa_ordini& app() { return (TStampa_ordini&) main_app();} + +void TStampa_ordini::open_files(int logicnum, ...) +{ + va_list marker; + va_start(marker, logicnum); + while (logicnum > 0) + { + CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum); + _file.add(new TLocalisamfile(logicnum), logicnum); + logicnum = va_arg(marker, int); + } +} + +bool TStampa_ordini::stato_handler(TMask_field& f, KEY k) +{ + if (f.to_check(k)) + { + TMask& m = f.mask(); + const char v = f.get()[0]; + const bool b = m.get_bool(F_DETTAGLIO); + if (v == 'E' && b) // Se si seleziona la stampa degli ordini totalmente evasi ha senso stampare solo le righe evase, cioe' tutte + { + m.set(F_STATORORD, "T"); + m.disable(F_STATORORD); + } + else + if (b) // Qualsiasi altro tipo di stampa dettaglio righe puo' essere selezionata + m.enable(F_STATORORD); + } + return TRUE; +} + +bool TStampa_ordini::detail_handler(TMask_field& f, KEY k) +{ + if (k == K_SPACE) + { + TMask& m = f.mask(); + const bool b = m.get_bool(F_DETTAGLIO); + const tipo_stampa tipo = (tipo_stampa) m.get_int(F_TIPO); + + if (tipo != numero) + { + m.enable(-GR_DETAIL,b); + m.enable(F_STATOORD,!b); + if (tipo != articolo) + m.set(F_DETAIL_BY_DOC, !b ? "" : "X"); + } + else + { + m.enable(-GR_ART,b); + m.enable(-GR_MAG,b); + m.enable(F_STATORORD,b); + } + } + return TRUE; +} + +bool TStampa_ordini::create() +{ + open_files(LF_OCCAS, LF_CLIFO, LF_INDSP, LF_CFVEN, LF_MOVMAG, LF_RMOVMAG, 0); + _m = new TMask ("or1100a"); + _m->set_handler(F_STATOORD, stato_handler); + _m->set_handler(F_DETTAGLIO, detail_handler); + _fcg = new TTable("FCG"); + _codgiac = new TCodgiac_livelli; + if (!_codgiac->enabled()) + { + _m->hide(F_DETAIL_LEV); + _m->hide(-GR_GIAC); + } + + short id = F_GIAC1; + int l = 5; + for (_fcg->first(); _fcg->good(); _fcg->next(), id+=4) + _m->set(id, _fcg->get("CODTAB")); + + return TSkeleton_application::create(); +} + +bool TStampa_ordini::destroy() +{ + delete _m; + delete _fcg; + delete _codgiac; + return TSkeleton_application::destroy(); +} + +void TStampa_ordini::filter_for_number() +{ + CHECK(_frm, "Form non valido"); + + TCursor* cur = _frm->cursor(); + + TDocumento *doc = new TDocumento; // Don't delete it + cur->file().set_curr(doc); + cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc)); + cur->setkey(_order == num_doc ? 1 : 3); // Selezione per numero doc o data emissione + + TRectype f(LF_DOC), t(LF_DOC); + TString filter_expr,s; + + filter_expr << "(TIPOCF==\"" << _tipocf << "\")"; + if (_order == num_doc) + { + f.put(DOC_PROVV, _provv); + f.put(DOC_ANNO, _anno); + f.put(DOC_CODNUM, _codnum); + t = f; + f.put(DOC_NDOC, _from_ndoc); + t.put(DOC_NDOC, _to_ndoc); + } + else + { + f.put(DOC_DATADOC, _from_date); + t.put(DOC_DATADOC, _to_date); + filter_expr << " && (PROVV==\"" << _provv << "\")"; + filter_expr << " && (ANNO==\"" << _anno << "\")"; + filter_expr << " && (CODNUM==\"" << _codnum << "\")"; + } + cur->setregion(f,t); + + if (_TEA_ord == 'E') + filter_expr << " && (DOCEVASO==\"X\")"; + else + if (_TEA_ord == 'A') + filter_expr << " && (DOCEVASO!=\"X\")"; + + if (_from_cons.ok()) + { + filter_expr << "&&"; + s.format("(ANSI(DATACONS)>=\"%s\")", + (const char*)_from_cons.string(ANSI)); + filter_expr << s; + } + if (_to_cons.ok()) + { + filter_expr << "&&"; + s.format("(ANSI(DATACONS)<=\"%s\")", + (const char*)_to_cons.string(ANSI)); + filter_expr << s; + } + + cur->setfilter(filter_expr); + + if (_detail_rows) + { + for (short i = 6; i<=8; i++) + _frm->find_field('B', odd_page, i).show(); + _frm->find_field('B', odd_page, "DET").show(); // Visualizza la sottosezione + TForm_subsection& ssec = (TForm_subsection&)_frm->find_field('B', odd_page, "RIGHE"); // Sottosezione padre + + // Applica gli altri filtri alla sezione + TString cond; + if (_TEA_rord == 'E') + s.format("(%d->RIGAEVASA==\"X\")",LF_RIGHEDOC); + else + if (_TEA_rord == 'A') + s.format("(%d->RIGAEVASA!=\"X\")",LF_RIGHEDOC); + + cond << s; + + // Setta i range per la data di consegna + if (_from_cons.ok()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(ANSI(%d->DATACONS)>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_cons.string(ANSI)); + cond << s; + } + if (_to_cons.ok()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(ANSI(%d->DATACONS)<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_cons.string(ANSI)); + cond << s; + } + + // Setta i range per il codice magazzino + if (_from_mag.not_empty()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(%d->CODMAG>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_mag); + cond << s; + } + if (_to_mag.not_empty()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(%d->CODMAG<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_mag); + cond << s; + } + + // Setta i range per il codice articolo + if (_from_art.not_empty()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(%d->CODART>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_art); + cond << s; + } + if (_to_art.not_empty()) + { + if (s.not_empty()) + cond << "&&"; + s.format("(%d->CODART<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_art); + cond << s; + } + + if (s.not_empty()) + ssec.setcondition(cond, _strexpr); + } +} + +void TStampa_ordini::filter_for_clifo_agent() +{ + CHECK(_frm, "Form non valido"); + + const bool is_for_cli = _tipo == clifo; + + TString s, ws,lev_str, mag_str; + TSorted_cursor* cur = (TSorted_cursor*)_frm->cursor(); + + TDocumento *doc = new TDocumento; + cur->file(LF_DOC).set_curr(doc); + cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc)); + if (_detail_rows && !_detail_doc) // Cambia l'ordinamento se si vuol dettagliare per articolo e non per documento + { + if (_detail_level > 0) + lev_str.format("LIVELLO[1,%d]",_codgiac->packed_length(_detail_level)); + if (_detail_mag) + mag_str.format("CODMAG[1,3]"); + if (_detail_dep) + mag_str.format("CODMAG"); + + if (!is_for_cli) + s.format("%d->CODAG|",LF_DOC); + if (is_for_cli || _detail_cli) + { + ws.format("%d->TIPOCF|%d->CODCF|",LF_DOC, LF_DOC); + s << ws; + } + s << "CODART|"; + if (lev_str.not_empty()) + s << lev_str << "|"; + if (mag_str.not_empty()) + s << mag_str << "|"; + s << "DATACONS"; + cur->change_order(s); + } + //Mo setto li filtri, altrimenti stampa tutto er file de' righe documento + TRectype f(LF_RIGHEDOC), t(LF_RIGHEDOC); + TString filter_expr; + + f.put(DOC_PROVV, _provv); + f.put(DOC_ANNO, _anno); + f.put(DOC_CODNUM, _codnum); + t = f; + cur->setregion(f,t); // This is the region... + + s.format("(%d->TIPOCF==\"",LF_DOC); + filter_expr << s << _tipocf << "\")"; // Nel caso di stampa per agenti e' sempre "C" + + // Filtro su Cli/Fo od agente + if (is_for_cli) + { + if (_from_cf > 0L) + { + s.format("&&(STR(NUM(%d->CODCF)>=%ld))", LF_DOC, _from_cf); + filter_expr << s; + } + + if (_to_cf > 0L) + { + s.format("&&(STR(NUM(%d->CODCF)<=%ld))", LF_DOC, _to_cf); + filter_expr << s; + } + } + else + { + if (_from_age.not_empty()) + { + s.format("&&(%d->CODAG>=%ld)", LF_DOC, (const char*)_from_age); + filter_expr << s; + } + + if (_to_age.not_empty()) + { + s.format("&&(%d->CODAG)<=%ld)", LF_DOC, _to_age); + filter_expr << s; + } + } + + + // Filtro sulla data ordine... + if (_from_date.ok()) + { + s.format("&&(ANSI(%d->DATADOC)>=\"%s\")", LF_DOC, + (const char*)_from_date.string(ANSI)); + filter_expr << s; + } + if (_to_date.ok()) + { + s.format("&&(ANSI(%d->DATADOC)<=\"%s\")", LF_DOC, + (const char*)_to_date.string(ANSI)); + filter_expr << s; + } + + // Filtro sulla data consegna... + if (_from_cons.ok()) + { + s.format("&&(ANSI(DATACONS)>=\"%s\")", + (const char*)_from_cons.string(ANSI)); + filter_expr << s; + } + if (_to_cons.ok()) + { + s.format("&&(ANSI(DATACONS)<=\"%s\")", + (const char*)_to_cons.string(ANSI)); + filter_expr << s; + } + + if (_detail_rows) + { + // Setta i range per il codice articolo + if (_from_art.not_empty()) + { + s.format("&&(%d->CODART>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_art); + filter_expr << s; + } + if (_to_art.not_empty()) + { + filter_expr << "&&"; + s.format("(%d->CODART<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_art); + filter_expr << s; + } + // Setta i range per i livelli di giacenza (da 1 a 4) + if (_detail_level > 0) + for (int lev=1, index=0; lev <= _detail_level; lev++) + { + if (!_codgiac->enabled(lev)) + continue; + TString& from = (TString&) _from_giac[index]; + TString& to = (TString&) _to_giac[index++]; + const int starts = _codgiac->code_start(lev); + const int ends = starts+_codgiac->code_length(lev); + if (from.not_empty()) + { + s.format("&&(%d->LIVELLO[%d,%d]>=\"%s\")", + LF_RIGHEDOC,starts,ends,(const char*)from); + filter_expr << s; + } + if (to.not_empty()) + { + s.format("&&(%d->LIVELLO[%d,%d]<=\"%s\")", + LF_RIGHEDOC,starts,ends,(const char*)to); + filter_expr << s; + } + } + // Setta i range per il codice magazzino (deposito incluso) + if (_from_mag.not_empty()) + { + s.format("&&(%d->CODMAG>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_mag); + filter_expr << s; + } + if (_to_mag.not_empty()) + { + s.format("&&(%d->CODMAG<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_mag); + filter_expr << s; + } + } + + s = ""; + if (!_detail_rows) + { + if (_TEA_ord == 'E') + s.format("&&(%d->DOCEVASO==\"X\")",LF_DOC); + else + if (_TEA_ord == 'A') + s.format("&&(%d->DOCEVASO!=\"X\")",LF_DOC); + } + else + { + if (_TEA_rord == 'E') + s.format("(%d->RIGAEVASA==\"X\")",LF_RIGHEDOC); + else + if (_TEA_rord == 'A') + s.format("(%d->RIGAEVASA!=\"X\")",LF_RIGHEDOC); + } + + if (s.not_empty()) + filter_expr << s; + + cur->setfilter(filter_expr,TRUE); + + // Alla fine setta i campi da vedere + if (!is_for_cli && _detail_cli) + { + // Solo stampa per agenti: se si e' settato il distinguo per clienti + // mostra l'intestazione prima di ogni cambio cliente + TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "HCLIENTI"); + ssec.enable(); + } + + if (!_detail_rows || _detail_doc) // Stampa distinguendo per documento e non per righe articolo... + { + TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "DOCUMENTI"); + if (!is_for_cli && _detail_doc) + ssec.enable(); // Se stampa per agenti e dettaglia documenti per cliente abilita la sezione + else + { // Se stampa per cli/fo abilita i campi corrispondenti al distinguo per documento (valuta, residuo evaso ecc...) + ssec.printsection().find_field(101).show(); + for (short id = 102; id <= 106; id++) + ssec.printsection().find_field(id).enable(); + } + } + + if (_detail_rows) // Stampa dettaglio righe... + { + for (short i = 7; i<=9; i++) + _frm->find_field('B', odd_page, i).show(); // Aggiunge le colonne di dettaglio + // dulcis in fundo (Dulcinea mia adorata), si abilita la sezione RIGHEART + // anziche' RIGHEDOC nel qual caso sia stato specificato il raggruppamento per Articoli (e sotto-opzioni) + if (!_detail_doc) // Se la stampa deve distinguere e dettagliare per articoli e non per documenti... + { + TString cond; + TForm_item& ff = _frm->find_field('B', odd_page, "RIGHEDOC"); + ff.y() = 1; + + if (!is_for_cli) // Abilita la sottosezione principale se stampa per agenti + { + TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "ARTCLI"); + ssec.enable(); + if (_detail_cli) // Se e' abilitata la distinzione per clienti setta l'espressione di raggruppamento + { + cond = ssec.condition(); + cond << LF_CLIFO << "->TIPOCF+" << LF_CLIFO << "->CODCF"; + ssec.setcondition(cond, _strexpr); + } + } + + // Setta la condizione di raggruppamento principale per articoli (comune alla stampa per cli/fo e per agenti) + TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "RIGHEART"); + ssec.enable(); + cond = ssec.condition(); + if (lev_str.not_empty()) + cond << "+" << lev_str; + if (mag_str.not_empty()) + cond << "+" << mag_str; + ssec.setcondition(cond, _strexpr); + + if (is_for_cli) + { // I seguenti campi non necessitano di abilitazione se la stampa e' per agente + TForm_subsection& dsec = (TForm_subsection&) _frm->find_field('B', odd_page, "DOCUMENTI"); + for (short id = 401; id <= 409; id++) + dsec.printsection().find_field(id).enable(); + } + } + else + _frm->find_field('B', odd_page, "RIGHEDOC").enable(); // Abilita la sezione di dettaglio righe PER DOCUMENTO + } +} + +void TStampa_ordini::filter_for_articolo() +{ + CHECK(_frm, "Form non valido"); + + TString s, ws,lev_str, mag_str; + TSorted_cursor* cur = (TSorted_cursor*)_frm->cursor(); + + if (_detail_level > 0) + lev_str.format("LIVELLO[1,%d]",_codgiac->packed_length(_detail_level)); + if (_detail_mag) + mag_str.format("CODMAG[1,3]"); + if (_detail_dep) + mag_str.format("CODMAG"); + + s << "CODART|"; + if (lev_str.not_empty()) + s << lev_str << "|"; + if (mag_str.not_empty()) + s << mag_str << "|"; + s << "DATACONS"; + cur->change_order(s); // Setta l'ordine + + + TDocumento *doc = new TDocumento; + cur->file(LF_DOC).set_curr(doc); + cur->file(LF_RIGHEDOC).set_curr(new TRiga_documento(doc)); + + TRectype f(LF_RIGHEDOC), t(LF_RIGHEDOC); + TString filter_expr; + + f.put(DOC_PROVV, _provv); + f.put(DOC_ANNO, _anno); + f.put(DOC_CODNUM, _codnum); + t = f; + cur->setregion(f,t); // This is the region... + + s.format("(%d->TIPOCF==\"",LF_DOC); + filter_expr << s << _tipocf << "\")"; // Nel caso di stampa per agenti e' sempre "C" + + // Filtro su Cli/Fo + if (_from_cf > 0L) + { + s.format("&&(STR(NUM(%d->CODCF)>=%ld))", LF_DOC, _from_cf); + filter_expr << s; + } + + if (_to_cf > 0L) + { + s.format("&&(STR(NUM(%d->CODCF)<=%ld))", LF_DOC, _to_cf); + filter_expr << s; + } + // Filtro sulla data ordine... + if (_from_date.ok()) + { + s.format("&&(ANSI(%d->DATADOC)>=\"%s\")", LF_DOC, + (const char*)_from_date.string(ANSI)); + filter_expr << s; + } + if (_to_date.ok()) + { + s.format("&&(ANSI(%d->DATADOC)<=\"%s\")", LF_DOC, + (const char*)_to_date.string(ANSI)); + filter_expr << s; + } + + // Filtro sulla data consegna... + if (_from_cons.ok()) + { + s.format("&&(ANSI(DATACONS)>=\"%s\")", + (const char*)_from_cons.string(ANSI)); + filter_expr << s; + } + if (_to_cons.ok()) + { + s.format("&&(ANSI(DATACONS)<=\"%s\")", + (const char*)_to_cons.string(ANSI)); + filter_expr << s; + } + + if (_from_art.not_empty()) + { + s.format("&&(%d->CODART>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_art); + filter_expr << s; + } + if (_to_art.not_empty()) + { + filter_expr << "&&"; + s.format("(%d->CODART<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_art); + filter_expr << s; + } + // Setta i range per i livelli di giacenza (da 1 a 4) + if (_detail_level > 0) + for (int lev=1, index=0; lev <= _detail_level; lev++) + { + if (!_codgiac->enabled(lev)) + continue; + TString& from = (TString&) _from_giac[index]; + TString& to = (TString&) _to_giac[index++]; + const int starts = _codgiac->code_start(lev); + const int ends = starts+_codgiac->code_length(lev); + if (from.not_empty()) + { + s.format("&&(%d->LIVELLO[%d,%d]>=\"%s\")", + LF_RIGHEDOC,starts,ends,(const char*)from); + filter_expr << s; + } + if (to.not_empty()) + { + s.format("&&(%d->LIVELLO[%d,%d]<=\"%s\")", + LF_RIGHEDOC,starts,ends,(const char*)to); + filter_expr << s; + } + } + // Setta i range per il codice magazzino (deposito incluso) + if (_from_mag.not_empty()) + { + s.format("&&(%d->CODMAG>=\"%s\")", + LF_RIGHEDOC, (const char*)_from_mag); + filter_expr << s; + } + if (_to_mag.not_empty()) + { + s.format("&&(%d->CODMAG<=\"%s\")", + LF_RIGHEDOC, (const char*)_to_mag); + filter_expr << s; + } + + s = ""; + if (_TEA_rord == 'E') + s.format("(%d->RIGAEVASA==\"X\")",LF_RIGHEDOC); + else + if (_TEA_rord == 'A') + s.format("(%d->RIGAEVASA!=\"X\")",LF_RIGHEDOC); + + if (s.not_empty()) + filter_expr << s; + + cur->setfilter(filter_expr,TRUE); // Setta il filtro e serra i ranghi + + // Setta la condizione di raggruppamento principale per articoli (comune alla stampa per cli/fo e per agenti) + TForm_subsection& ssec = (TForm_subsection&) _frm->find_field('B', odd_page, "ARTICOLI"); + ssec.enable(); + s = ssec.condition(); + if (lev_str.not_empty()) + s << "+" << lev_str; + if (mag_str.not_empty()) + s << "+" << mag_str; + ssec.setcondition(s, _strexpr); + + for (short id = 401; id <= 409; id++) + _frm->find_field('B',odd_page,id).enable(); +} + +void TStampa_ordini::main_loop() +{ + TString form_name; + + while (_m->run()!=K_QUIT) + { + // selezione tipo di stampa per il form appropriato + _tipo = (tipo_stampa) _m->get_int(F_TIPO); + _codnum = _m->get(F_CODNUM); + _provv = _m->get(F_PROVV)[0]; + _anno = _m->get_int(F_ANNO); + _order = _m->get(F_DATA_O_NUM)[0] == 'N' ? num_doc : data_doc; + _from_ndoc = _m->get_long(F_NDOCFROM); + _to_ndoc = _m->get_long(F_NDOCTO); + _from_date = _m->get_date(F_EMISFROM); + _to_date = _m->get_date(F_EMISTO); + _from_cons = _m->get_date(F_CONSFROM); + _to_cons = _m->get_date(F_CONSTO); + _from_age = _m->get(F_AGEFROM); + _to_age = _m->get(F_AGETO); + _from_cf = _m->get_long(F_CFFROM); + _to_cf = _m->get_long(F_CFTO); + _from_mag = _m->get(F_MAGFROM); + _to_mag = _m->get(F_MAGTO); + _from_dep = _m->get(F_DEPFROM); + _to_dep = _m->get(F_DEPTO); + if (_from_mag.not_empty()) + _from_mag.left_just(3); + if (_to_mag.not_empty()) + _to_mag.left_just(3); + _from_mag << _from_dep; + _to_mag << _to_dep; + + _from_art = _m->get(F_ARTFROM); + _to_art = _m->get(F_ARTTO); + + _from_giac.destroy(); + _to_giac.destroy(); + _from_giac.add(_m->get(F_GIAC1_FROM),0); + _to_giac.add(_m->get(F_GIAC1_TO),0); + _from_giac.add(_m->get(F_GIAC2_FROM),1); + _to_giac.add(_m->get(F_GIAC2_TO),1); + _from_giac.add(_m->get(F_GIAC3_FROM),2); + _to_giac.add(_m->get(F_GIAC3_TO),2); + _from_giac.add(_m->get(F_GIAC4_FROM),3); + _to_giac.add(_m->get(F_GIAC4_TO),3); + + if (!_from_date.ok()) + _from_date = botime; + if (!_to_date.ok()) + _to_date = eotime; + _tipocf = _m->get(F_TIPOCF)[0]; + _detail_rows = _m->get_bool(F_DETTAGLIO); + _detail_doc = _m->get_bool(F_DETAIL_BY_DOC); + _detail_cli = _m->get_bool(F_DETAIL_BY_CLI); + _detail_mag = _m->get_bool(F_DETAIL_MAG); + _detail_dep = _m->get_bool(F_DETAIL_DEP); + _detail_level = _m->get_int(F_DETAIL_LEV); + + _TEA_ord = _m->get(F_STATOORD)[0]; + _TEA_rord = _m->get(F_STATORORD)[0]; + + switch (_tipo) + { + case clifo: + form_name = "or1100b"; + break; + case agente: + form_name = "or1100c"; + break; + case articolo: + form_name = "or1100d"; + break; + default: + form_name = "or1100a"; + break; + } + + _frm = new TOrdine_form(form_name); + _frm->set_options(_detail_level, _detail_mag, _detail_dep); + // Selezione cursore & filtro + switch (_tipo) + { + case clifo: + case agente: + filter_for_clifo_agent(); + break; + case articolo: + filter_for_articolo(); + break; + default: + filter_for_number(); + break; + } + + + const int hh = 6; + const int fh = 1; + const int fl = printer().formlen(); + + int rows[4]; // Righe orizzontali + rows[0] = hh-2; + rows[1] = hh; + rows[2] = fl-1; + rows[3] = 0; + _frm->genera_intestazioni(odd_page, hh-1); + _frm->genera_fincatura(odd_page, hh-2, fl-1, rows); + + // stampa + if (_frm->cursor()->items() > 0) + _frm->print(); + delete _frm; + _m->reset(); + } +} + +int or1100(int argc, char** argv) +{ + TStampa_ordini a; + a.run(argc,argv,"Stampa ordini"); + return 0; +} diff --git a/or/or1100a.h b/or/or1100a.h new file mode 100755 index 000000000..104d6dea5 --- /dev/null +++ b/or/or1100a.h @@ -0,0 +1,68 @@ +// Defines per maschera e form + +#define F_TIPO 101 +#define F_CODNUM 102 +#define F_ANNO 103 +#define F_PROVV 104 +#define F_DATA_O_NUM 105 +#define F_NDOCFROM 106 +#define F_NDOCTO 107 +#define F_EMISFROM 108 +#define F_EMISTO 109 +#define F_TIPOCF 110 +#define F_CFFROM 111 +#define F_CFTO 112 +#define F_CONSFROM 113 +#define F_CONSTO 114 +#define F_ARTFROM 117 +#define F_ARTTO 118 +#define F_AGEFROM 119 +#define F_AGETO 120 +#define F_DETTAGLIO 121 +#define F_STATOORD 122 +#define F_STATORORD 123 +#define F_DETAIL_LEV 124 +#define F_RAGG_PER_ART 125 +#define F_RAGG_CLI 126 +#define F_GIAC1 127 +#define F_GIAC1_DES 128 +#define F_GIAC1_FROM 129 +#define F_GIAC1_TO 130 +#define F_GIAC2 131 +#define F_GIAC2_DES 132 +#define F_GIAC2_FROM 133 +#define F_GIAC2_TO 134 +#define F_GIAC3 135 +#define F_GIAC3_DES 136 +#define F_GIAC3_FROM 137 +#define F_GIAC3_TO 138 +#define F_GIAC4 139 +#define F_GIAC4_DES 140 +#define F_GIAC4_FROM 141 +#define F_GIAC4_TO 142 +#define F_DETAIL_MAG 143 +#define F_DETAIL_DEP 144 +#define F_MAGFROM 145 +#define F_MAGTO 146 +#define F_DEPFROM 147 +#define F_DEPTO 148 +#define F_DETAIL_BY_DOC 149 +#define F_DETAIL_BY_CLI 150 + +#define GR_CLIFO 1 +#define GR_NUM 2 +#define GR_ART 3 +#define GR_AGE 4 +#define GR_NDOC 5 +#define GR_DATA 6 +#define GR_TUTTI 7 +#define GR_MAG 8 +#define GR_RAGG 9 +#define GR_GIAC 10 +#define GR_DETAIL 11 +#define GR_DETAILART 12 + +// Defines per forms +#define G_DETTAGLIO 1 +#define G_TOTALE 2 +#define G_TOTALEART 3 diff --git a/or/or1100a.uml b/or/or1100a.uml new file mode 100755 index 000000000..365e6c006 --- /dev/null +++ b/or/or1100a.uml @@ -0,0 +1,606 @@ +#include "or1100a.h" + +TOOLBAR "" 0 19 0 4 + +BUTTON DLG_PRINT 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +PAGE "Stampa ordini" -1 -1 78 20 + +RADIOBUTTON F_TIPO 30 +BEGIN + PROMPT 2 1 "Tipo stampa" + ITEM "0|Numero/Data" + MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_AGE@|SHOW,GR_CLIFO@|ENABLE,F_DATA_O_NUM|ENABLE,F_DETTAGLIO|" ",F_DETTAGLIO|CLEAR,GR_DETAIL@|CLEAR,GR_DETAILART@ + ITEM "1|Cliente/Fornitore" + MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_AGE@|SHOW,GR_CLIFO@|ENABLE,GR_CLIFO@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|ENABLE,F_DETTAGLIO|" ",F_DETTAGLIO|CLEAR,GR_DETAIL@ + ITEM "2|Agente" + MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_CLIFO@|SHOW,GR_AGE@|ENABLE,GR_AGE@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|ENABLE,F_DETTAGLIO|" ",F_DETTAGLIO|CLEAR,GR_DETAIL@|ENABLE,F_DETAIL_BY_CLI + ITEM "3|Articolo" + MESSAGE DISABLE,GR_TUTTI@|HIDE,GR_AGE@|SHOW,GR_CLIFO@|DISABLE,F_DATA_O_NUM|"D", F_DATA_O_NUM|DISABLE,F_DETTAGLIO|"X",F_DETTAGLIO|ENABLE,GR_CLIFO@|CLEAR,GR_DETAIL@ +END + +GROUPBOX DLG_NULL 40 6 +BEGIN + PROMPT 35 1 "Ordine" +END + +STRING F_CODNUM 4 +BEGIN + PROMPT 36 2 "Codice Num. " + FLAG "U" + USE %NUM SELECT I1==3 + INPUT CODTAB F_CODNUM + DISPLAY "Cod. Num." CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_CODNUM CODTAB + CHECKTYPE REQUIRED +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 65 2 "Anno " + CHECKTYPE REQUIRED +END + +LIST F_PROVV 12 +BEGIN + PROMPT 36 3 "Tipo numerazione " + ITEM "D|Definitiva" + ITEM "P|Provvisoria" +END + +LISTBOX F_DATA_O_NUM 20 +BEGIN + PROMPT 36 4 "Selezione su " + ITEM "N|Numero documento" + MESSAGE HIDE,GR_DATA@|SHOW,GR_NDOC@ + ITEM "D|Data documento" + MESSAGE SHOW,GR_DATA@|HIDE,GR_NDOC@ +END + +NUMBER F_NDOCFROM 7 +BEGIN + PROMPT 36 5 "Dal " + USE 33 + JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF + JOIN 13 TO 20 INTO COM=COMCF + INPUT PROVV F_PROVV SELECT + INPUT ANNO F_ANNO SELECT + INPUT CODNUM F_CODNUM SELECT + INPUT NDOC F_NDOCFROM + DISPLAY "Data@10" DATADOC + DISPLAY "Numero@7" NDOC + DISPLAY "Cliente/Fornitore@40" 20->RAGSOC + DISPLAY "Comune@20" 13->DENCOM + OUTPUT F_NDOCFROM NDOC + CHECKTYPE NORMAL + GROUP GR_NDOC +END + +NUMBER F_NDOCTO 7 +BEGIN + PROMPT 62 5 "Al " + USE 33 + JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF + JOIN 13 TO 20 INTO COM=COMCF + INPUT PROVV F_PROVV SELECT + INPUT ANNO F_ANNO SELECT + INPUT CODNUM F_CODNUM SELECT + INPUT NDOC F_NDOCTO + DISPLAY "Data@10" DATADOC + DISPLAY "Numero@7" NDOC + DISPLAY "Cliente/Fornitore@40" 20->RAGSOC + DISPLAY "Comune@20" 13->DENCOM + OUTPUT F_NDOCTO NDOC + GROUP GR_NDOC + CHECKTYPE NORMAL +END + +DATE F_EMISFROM +BEGIN + PROMPT 36 5 "Dal " + GROUP GR_DATA +END + +DATE F_EMISTO +BEGIN + PROMPT 59 5 "Al " + GROUP GR_DATA +END + +GROUPBOX DLG_NULL 30 4 +BEGIN + PROMPT 2 7 "Cliente" + GROUP GR_CLIFO +END + +LIST F_TIPOCF 1 11 +BEGIN + PROMPT 3 8 "Tipo C/F " + ITEM "C|Clienti" + ITEM "F|Fornitori" + GROUP GR_CLIFO +END + +NUMBER F_CFFROM 6 +BEGIN + PROMPT 3 9 "Dal " + USE LF_CLIFO KEY 1 + INPUT TIPOCF F_TIPOCF SELECT + INPUT CODCF F_CFFROM + DISPLAY "Codice@6R" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + OUTPUT F_CFFROM CODCF + CHECKTYPE NORMAL + GROUP GR_TUTTI GR_CLIFO +END + +NUMBER F_CFTO 6 +BEGIN + PROMPT 19 9 "Al " + USE LF_CLIFO KEY 1 + INPUT TIPOCF F_TIPOCF SELECT + INPUT CODCF F_CFTO + DISPLAY "Codice@6R" CODCF + DISPLAY "Ragione sociale@50" RAGSOC + OUTPUT F_CFTO CODCF + CHECKTYPE NORMAL + GROUP GR_TUTTI GR_CLIFO +END + +GROUPBOX DLG_NULL 30 4 +BEGIN + PROMPT 2 7 "Agente" + GROUP GR_TUTTI GR_AGE +END + +STRING F_AGEFROM 6 +BEGIN + PROMPT 3 8 "Dal " + FLAGS "U" + USE LF_AGENTI + INPUT CODAGE F_AGEFROM + DISPLAY "Codice" CODAGE + DISPLAY "Descr@50" RAGSOC + OUTPUT F_AGEFROM CODAGE + GROUP GR_TUTTI GR_AGE +END + +STRING F_AGETO 6 +BEGIN + PROMPT 3 9 "Al " + FLAGS "U" + COPY USE F_AGEFROM + INPUT CODAGE F_AGETO + COPY DISPLAY F_AGEFROM + OUTPUT F_AGETO CODAGE + GROUP GR_TUTTI GR_AGE +END + +GROUPBOX DLG_NULL 40 4 +BEGIN + PROMPT 35 7 "Data consegna" +END + +DATE F_CONSFROM +BEGIN + PROMPT 36 8 "Dal " +END + +DATE F_CONSTO +BEGIN + PROMPT 36 9 "Al " +END + + +BOOLEAN F_DETTAGLIO +BEGIN + PROMPT 3 11 "Dettaglio righe" +END + + +BOOLEAN F_DETAIL_BY_DOC +BEGIN + PROMPT 35 11 "Dettaglio per documento" + FLAGS "D" + MESSAGE TRUE DISABLE,GR_DETAILART@ + MESSAGE FALSE ENABLE,GR_DETAILART@ + GROUP GR_DETAIL +END + +BOOLEAN F_DETAIL_BY_CLI +BEGIN + PROMPT 35 12 "Ordina per cliente" + FLAGS "D" + GROUP GR_TUTTI +END + + +NUMBER F_DETAIL_LEV 1 +BEGIN + PROMPT 35 13 "Livello dettaglio " + FLAGS "D" + GROUP GR_DETAILART + USE FCG + INPUT CODTAB F_DETAIL_LEV + DISPLAY "Codice" CODTAB + DISPLAY "Descrizione livello@50" S0 + OUTPUT F_DETAIL_LEV CODTAB + CHECKTYPE NORMAL +END + +LIST F_RAGG_PER_ART 12 +BEGIN + PROMPT 35 14 "Periodo raggruppamento " + ITEM "0|Giornaliero" + ITEM "1|1 mese" + ITEM "2|2 mesi" + ITEM "3|3 mesi" + ITEM "4|4 mesi" + FLAGS "D" + GROUP GR_DETAILART +END + +BOOLEAN F_DETAIL_MAG +BEGIN + PROMPT 35 15 "Dettaglia magazzini" + FLAGS "D" + GROUP GR_DETAILART +END + +BOOLEAN F_DETAIL_DEP +BEGIN + PROMPT 35 16 "Dettaglia depositi" + FLAGS "D" + GROUP GR_DETAILART +END + +LIST F_STATOORD 6 +BEGIN + PROMPT 3 12 "Tipo ordini " + ITEM "T|Tutti" + ITEM "E|Evasi" + ITEM "A|Aperti" +END + +LIST F_STATORORD 6 +BEGIN + PROMPT 3 13 "Tipo righe ordini " + FLAGS "D" + GROUP GR_DETAIL + ITEM "T|Tutte" + ITEM "E|Evase" + ITEM "A|Aperte" +END + +GROUPBOX DLG_NULL 30 4 +BEGIN + PROMPT 2 15 "Articolo" +END + +STRING F_ARTFROM 20 +BEGIN + PROMPT 3 16 "Dal " + FLAGS "DU" + USE LF_ANAMAG + INPUT CODART F_ARTFROM + DISPLAY "Codice@20" CODART + DISPLAY "Descrizione@50" DESCR + OUTPUT F_ARTFROM CODART + CHECKTYPE NORMAL + ADD RUN ve2 -3 + GROUP GR_DETAIL GR_ART +END + +STRING F_ARTTO 20 +BEGIN + PROMPT 3 17 "Al " + FLAGS "DU" + USE LF_ANAMAG + INPUT CODART F_ARTTO + DISPLAY "Codice@20" CODART + DISPLAY "Descrizione@50" DESCR + OUTPUT F_ARTTO CODART + CHECKTYPE NORMAL + ADD RUN ve2 -3 + GROUP GR_DETAIL GR_ART +END + +ENDPAGE + + +PAGE "Avanzate" -1 -1 78 20 + +GROUPBOX DLG_NULL 74 10 +BEGIN + PROMPT 2 2 "Livelli di giacenza" +END + +STRING F_GIAC1 1 +BEGIN + PROMPT 3 3 "1. " + FLAGS "D" + USE FCG + INPUT CODTAB[1,1] F_GIAC1 + OUTPUT F_GIAC1_DES S0 + CHECKTYPE NORMAL +END + +STRING F_GIAC1_DES 60 +BEGIN + PROMPT 12 3 "" + FLAGS "D" +END + +STRING F_GIAC1_FROM 24 +BEGIN + PROMPT 12 4 "Da " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC1 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC1 + INPUT CODTAB[2,25] F_GIAC1_FROM + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC1_FROM CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC1_TO 23 +BEGIN + PROMPT 47 4 "A " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC1 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC1 + INPUT CODTAB[2,25] F_GIAC1_TO + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC1_TO CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC2 1 +BEGIN + PROMPT 3 5 "2. " + FLAGS "D" + USE FCG + INPUT CODTAB[1,1] F_GIAC2 + OUTPUT F_GIAC2_DES S0 + CHECKTYPE NORMAL +END + +STRING F_GIAC2_DES 60 +BEGIN + PROMPT 12 5 "" + FLAGS "D" +END + +STRING F_GIAC2_FROM 23 +BEGIN + PROMPT 12 6 "Da " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC2 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC2 + INPUT CODTAB[2,25] F_GIAC2_FROM + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC2_FROM CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC2_TO 23 +BEGIN + PROMPT 47 6 "A " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC2 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC2 + INPUT CODTAB[2,25] F_GIAC2_TO + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC2_TO CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC3 1 +BEGIN + PROMPT 3 7 "3. " + USE FCG + INPUT CODTAB[1,1] F_GIAC3 + OUTPUT F_GIAC3_DES S0 + CHECKTYPE NORMAL + FLAGS "D" +END + +STRING F_GIAC3_DES 60 +BEGIN + PROMPT 12 7 "" + FLAGS "D" +END + +STRING F_GIAC3_FROM 23 +BEGIN + PROMPT 12 8 "Da " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC3 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC3 + INPUT CODTAB[2,25] F_GIAC3_FROM + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC3_FROM CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC3_TO 23 +BEGIN + PROMPT 47 8 "A " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC3 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC3 + INPUT CODTAB[2,25] F_GIAC3_TO + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC3_TO CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC4 1 +BEGIN + PROMPT 3 9 "4. " + USE FCG + INPUT CODTAB[1,1] F_GIAC4 + OUTPUT F_GIAC4_DES S0 + CHECKTYPE NORMAL + FLAGS "D" +END + +STRING F_GIAC4_DES 60 +BEGIN + PROMPT 12 9 "" + FLAGS "D" +END + +STRING F_GIAC4_FROM 23 +BEGIN + PROMPT 12 10 "Da " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC4 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC4 + INPUT CODTAB[2,25] F_GIAC4_FROM + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC4_FROM CODTAB[2,25] + CHECKTYPE SEARCH + GROUP GR_DETAIL GR_GIAC +END + +STRING F_GIAC4_TO 23 +BEGIN + PROMPT 47 10 "A " + FLAGS "D" + KEY 1 + USE GCG SELECT CODTAB[1,1]=#F_GIAC4 + JOIN FCG ALIAS 500 INTO CODTAB==CODTAB[1,1] + INPUT CODTAB[1,1] F_GIAC4 + INPUT CODTAB[2,25] F_GIAC4_TO + DISPLAY "N.Liv." CODTAB[1,1] + DISPLAY "Livello@20 " 500@->S0 + DISPLAY "Codice@23" CODTAB[2,25] + DISPLAY "Descrizione@50 " GCG->S0 + OUTPUT F_GIAC4_TO CODTAB[2,25] + GROUP GR_DETAIL GR_GIAC + GROUP GR_DETAIL +END + +GROUPBOX DLG_NULL 30 4 +BEGIN + PROMPT 2 15 "Magazzino" +END + +STRING F_MAGFROM 3 +BEGIN + PROMPT 3 16 "Dal " + FLAGS "DU" + USE MAG SELECT CODTAB[4,5]=="" + INPUT CODTAB F_MAGFROM + DISPLAY "Codice " CODTAB[1,3] + DISPLAY "Denominazione mag.@50 " S0 + OUTPUT F_MAGFROM CODTAB[1,3] + CHECKTYPE NORMAL + GROUP GR_DETAIL GR_MAG +END + +STRING F_MAGTO 3 +BEGIN + PROMPT 3 17 "Al " + FLAGS "DU" + USE MAG SELECT CODTAB[4,5]=="" + INPUT CODTAB F_MAGTO + DISPLAY "Codice " CODTAB[1,3] + DISPLAY "Denominazione mag.@50 " S0 + OUTPUT F_MAGTO CODTAB[1,3] + CHECKTYPE NORMAL + GROUP GR_DETAIL GR_MAG +END + +GROUPBOX DLG_NULL 40 4 +BEGIN + PROMPT 35 15 "Deposito" +END + +STRING F_DEPFROM 2 +BEGIN + PROMPT 36 16 "Dal " + FLAGS "DU" + USE MAG SELECT CODTAB[4,5]!="" + INPUT CODTAB[1,3] F_MAGFROM + INPUT CODTAB[4,5] F_DEPFROM + DISPLAY "Codice " CODTAB + DISPLAY "Denominazione dep.@50 " S0 + OUTPUT F_MAGFROM CODTAB[1,3] + OUTPUT F_DEPFROM CODTAB[4,5] + CHECKTYPE NORMAL + GROUP GR_DETAIL GR_MAG +END + +STRING F_DEPTO 2 +BEGIN + PROMPT 36 17 "Al " + FLAGS "DU" + USE MAG SELECT CODTAB[4,5]!="" + INPUT CODTAB[1,3] F_MAGTO + INPUT CODTAB[4,5] F_DEPTO + DISPLAY "Codice " CODTAB + DISPLAY "Denominazione mag.@50 " S0 + OUTPUT F_MAGTO CODTAB[1,3] + OUTPUT F_DEPTO CODTAB[4,5] + CHECKTYPE NORMAL + GROUP GR_DETAIL GR_MAG +END + +ENDPAGE + +ENDMASK + diff --git a/or/or1100b.frm b/or/or1100b.frm new file mode 100755 index 000000000..d445c0272 --- /dev/null +++ b/or/or1100b.frm @@ -0,0 +1,566 @@ +// Form per la stampa ordini per cliente/fornitore +#include "or1100a.h" +// Cursor sorting on main file is set also in application +USE LF_RIGHEDOC BY LF_DOC->TIPOCF LF_DOC->CODCF CODNUM NDOC CODART DATACONS +JOIN LF_DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC +JOIN LF_ANAMAG INTO CODART==CODART +JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF +END + +DESCRIPTION +BEGIN +END + + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Courier New" + SIZE 10 +END + + +SECTION HEADER ODD 6 + +STRINGA 1 40 1 +BEGIN + KEY "nome ditta" + PROMPT 1 1 "Ditta " + MESSAGE _DITTA, !RAGSOC +END + +STRINGA 2 10 +BEGIN + KEY "Data" + PROMPT 76 1 "Data " + MESSAGE _TODAY +END + +NUMERO 3 7 +BEGIN + KEY "Nr. pagina" + PROMPT 92 1 "Pagina " + MESSAGE _PAGENO +END + +NUMERO 4 40 +BEGIN + KEY "Intestazione stampa" + PROMPT 40 2 "Stampa ordini per cliente/fornitore" +END + +END //HEADER + + +SECTION BODY ODD 4 COLUMNWISE + +NUMBER 1 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Codice" "Codice" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "X " "Fincatura sinistra e destra" + KEY "Codice" + PROMPT 1 1 "@B" + FIELD LF_DOC->CODCF + MESSAGE _ORDINE,VALTABLE,RESET + PICTURE "########" +END + +STRING 2 40 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Descrizione" "Descrizione" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA " X" "Fincatura sinistra e destra" + KEY "Descrizione Rag Soc" + PROMPT 2 1 "" + FIELD LF_CLIFO->RAGSOC +END + +STRINGA 3 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Val." "Val." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Codice Valuta" + PROMPT 3 1 "" +END + +DATA 4 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Data cons." "Data cons." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Data consegna documento" + PROMPT 4 1 "" +END + +NUMBER 5 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CValore" "Valore" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore" + PROMPT 5 1 "" +END + +NUMBER 6 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CVal.Residuo" "Val.Residuo" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore Residuo" + PROMPT 6 1 "" +END + +STRINGA 7 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "UM" "UM" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Unita' di misura" // Solo intestazione + FLAGS "H" + PROMPT 7 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 8 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Ordinata" "Q.ta Ordinata" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Ordinata" // Solo intestazione + FLAGS "H" + PROMPT 8 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 9 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Evasa" "Q.ta Evasa" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Evasa" // Solo intestazione + FLAGS "H" + PROMPT 9 1 "" + GROUP G_DETTAGLIO +END + + +// Raggruppamento righe documenti per lo stesso cli/fo +SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF + + NUMBER 101 10 + BEGIN + PROMPT 1 1 "" + FLAGS "H" + MESSAGE RESET,G_TOTALEART@ + END + + STRING 102 40 2 + BEGIN + KEY "Descrizione documento" + PROMPT 2 1 "" + MESSAGE _STREXPR,"*Doc. "+LF_DOC->CODNUM+"/"+LF_DOC->NDOC+" del "+LF_DOC->DATADOC + FLAGS "D" + END + + STRING 103 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FIELD LF_DOC->CODVAL + FLAGS "D" + END + + DATA 104 10 + BEGIN + KEY "Data consegna documento" + PROMPT 4 1 "" + FIELD LF_DOC->DATACONS + FLAGS "D" + END + + NUMBER 105 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_DOC->TOTVALORE + MESSAGE _ORDINE,VALTABLE,VALORD + PICTURE "." + FLAGS "D" + END + + NUMBER 106 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_DOC->TOTVALRES + MESSAGE _ORDINE,VALTABLE,VALRES + PICTURE "." + FLAGS "D" + END + + + SECTION RIGHEDOC 2 1 1 FILE LF_RIGHEDOC GROUP NDOC // changes into CODART grouping + FLAGS "D" // Da abilitare solo su dettaglio righe + + NUMBER 201 10 + BEGIN + PROMPT 1 1 "" + END + STRING 202 40 2 + BEGIN + KEY "Descrizione articolo" + PROMPT 2 1 "" + MESSAGE _STREXPR,"**Art. "+LF_RIGHEDOC->CODART+" "+LF_ANAMAG->DESCR + END + STRING 203 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + END + DATA 204 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FIELD LF_RIGHEDOC->DATACONS + END + NUMBER 205 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_RIGHEDOC->RIGAVALORE + PICTURE "." + END + NUMBER 206 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_RIGHEDOC->RIGAVALRES + PICTURE "." + END + STRINGA 207 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FIELD LF_RIGHEDOC->UMQTA + END + NUMBER 208 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + FIELD LF_RIGHEDOC->QTA + PICTURE "#@,@@@" + END + NUMBER 209 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + FIELD LF_RIGHEDOC->QTAEVASA + PICTURE "#@,@@@" + END + END // END SECTION RIGHEDOC + + // Ecco la sezione per il resto + + SECTION RIGHEART 1 0 0 FILE LF_RIGHEDOC GROUP CODVAL+CODART+DATACONS + FLAGS "D" + NUMBER 301 10 + BEGIN + PROMPT 1 1 "" + FLAGS "H" + END + STRING 302 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + MESSAGE _ORDINE,DESCRIZIONE|COPY,402 + FLAGS "H" + END + STRING 303 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FIELD LF_DOC->CODVAL + MESSAGE COPY,403 + FLAGS "H" + END + DATA 304 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FIELD LF_RIGHEDOC->DATACONS + MESSAGE COPY,404 + FLAGS "H" + END + NUMBER 305 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_RIGHEDOC->RIGAVALORE + MESSAGE _ORDINE,VALTABLE,VALORD|ADD,405 + PICTURE "." + FLAGS "H" + END + NUMBER 306 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_RIGHEDOC->RIGAVALRES + PICTURE "." + FLAGS "H" + MESSAGE _ORDINE,VALTABLE,VALRES|ADD,406 + END + STRINGA 307 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FIELD LF_RIGHEDOC->UMQTA + MESSAGE _ORDINE,SELECTUM|COPY,407 + FLAGS "H" + END + NUMBER 308 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + FIELD LF_RIGHEDOC->QTA + MESSAGE _ORDINE,CONVUM|ADD,408 + FLAGS "H" + END + NUMBER 309 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + FIELD LF_RIGHEDOC->QTAEVASA + MESSAGE _ORDINE,CONVUM|ADD,409 + FLAGS "H" + END + END // END SECTION RIGHEART + + // Totalizers for previous section + NUMBER 401 10 + BEGIN + PROMPT 1 1 "" + FLAGS "D" + END + STRING 402 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + FLAGS "D" + END + STRING 403 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FLAGS "D" + END + DATA 404 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FLAGS "D" + END + NUMBER 405 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + PICTURE "." + FLAGS "D" + //MESSAGE _ORDINE,VALTABLE,VALORD + GROUP G_TOTALEART + END + NUMBER 406 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + PICTURE "." + FLAGS "D" + //MESSAGE _ORDINE,VALTABLE,VALRES + GROUP G_TOTALEART + END + STRINGA 407 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FLAGS "D" + GROUP G_TOTALEART + END + NUMBER 408 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + PICTURE "#@,@@@" + FLAGS "D" + GROUP G_TOTALEART + END + NUMBER 409 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + PICTURE "#@,@@@" + FLAGS "D" + GROUP G_TOTALEART + END + +END // END SECTION DOCUMENTI + +// Sezioni di totalizzazione per Valuta (4, shown & hidden at runtime by VALTABLE messages in application code) + +SECTION TOTVAL1 3 0 1 GROUP +FLAGS "D" + NUMBER 51 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 52 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 53 4 + BEGIN + KEY "Codice valuta #1" + PROMPT 3 1 "" + END + + DATA 54 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 55 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 56 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #1 + + +SECTION TOTVAL2 1 0 1 GROUP +FLAGS "D" + NUMBER 61 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 62 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 63 4 + BEGIN + KEY "Codice valuta #2" + PROMPT 3 1 "" + END + + DATA 64 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 65 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 66 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #2 + + +SECTION TOTVAL3 1 0 1 GROUP +FLAGS "D" + NUMBER 71 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 72 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 73 4 + BEGIN + KEY "Codice valuta #3" + PROMPT 3 1 "" + END + + DATA 74 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 75 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 76 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #3 + +SECTION TOTVAL4 1 0 1 GROUP +FLAGS "D" + NUMBER 81 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 82 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 83 4 + BEGIN + KEY "Codice valuta #4" + PROMPT 3 1 "" + END + + DATA 84 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 85 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 86 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #4 + +END // End of Body + + diff --git a/or/or1100c.frm b/or/or1100c.frm new file mode 100755 index 000000000..cccbd508d --- /dev/null +++ b/or/or1100c.frm @@ -0,0 +1,590 @@ +// Form per la stampa ordini per agente +#include "or1100a.h" +// Cursor sorting on main file is set also in application +USE LF_RIGHEDOC BY LF_DOC->CODAG LF_DOC->TIPOCF LF_DOC->CODCF CODNUM NDOC CODART DATACONS +JOIN LF_DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC +JOIN LF_AGENTI TO LF_DOC INTO CODAGE==CODAG +JOIN LF_ANAMAG INTO CODART==CODART +JOIN LF_CLIFO TO LF_DOC INTO TIPOCF==TIPOCF CODCF==CODCF +END + +DESCRIPTION +BEGIN +END + + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Courier New" + SIZE 10 +END + + +SECTION HEADER ODD 6 + +STRINGA 1 40 1 +BEGIN + KEY "nome ditta" + PROMPT 1 1 "Ditta " + MESSAGE _DITTA, !RAGSOC +END + +STRINGA 2 10 +BEGIN + KEY "Data" + PROMPT 76 1 "Data " + MESSAGE _TODAY +END + +NUMERO 3 7 +BEGIN + KEY "Nr. pagina" + PROMPT 92 1 "Pagina " + MESSAGE _PAGENO +END + +NUMERO 4 40 +BEGIN + KEY "Intestazione stampa" + PROMPT 40 2 "Stampa ordini per agente" +END + +END //HEADER + + +SECTION BODY ODD 4 COLUMNWISE + +STRINGA 1 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Codice" "Codice" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "X " "Fincatura sinistra e destra" + KEY "Codice" + PROMPT 1 1 "@B" + FIELD LF_AGENTI->CODAGE + MESSAGE _ORDINE,VALTABLE,RESET + PICTURE "########" +END + +STRING 2 40 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Descrizione" "Descrizione" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA " X" "Fincatura sinistra e destra" + KEY "Descrizione Rag Soc" + PROMPT 2 1 "" + FIELD LF_AGENTI->RAGSOC +END + +STRINGA 3 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Val." "Val." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Codice Valuta" + PROMPT 3 1 "" +END + +DATA 4 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Data cons." "Data cons." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Data consegna documento" + PROMPT 4 1 "" +END + +NUMBER 5 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CValore" "Valore" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore" + PROMPT 5 1 "" +END + +NUMBER 6 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CVal.Residuo" "Val.Residuo" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore Residuo" + PROMPT 6 1 "" +END + +STRINGA 7 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "UM" "UM" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Unita' di misura" // Solo intestazione + FLAGS "H" + PROMPT 7 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 8 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Ordinata" "Q.ta Ordinata" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Ordinata" // Solo intestazione + FLAGS "H" + PROMPT 8 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 9 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Evasa" "Q.ta Evasa" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Evasa" // Solo intestazione + FLAGS "H" + PROMPT 9 1 "" + GROUP G_DETTAGLIO +END + + +// Raggruppamento di tutte le righe documenti per lo stesso agente +SECTION AGENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_DOC->CODAG + + NUMBER 90 10 + BEGIN + PROMPT 1 1 "" + FLAGS "H" + MESSAGE RESET,G_TOTALEART@ + END + + SECTION HCLIENTI 1 0 1 GROUP + FLAGS "D" + NUMBER 91 10 + BEGIN + PROMPT 1 1 "" + END + STRING 92 40 2 + BEGIN + KEY "Descrizione cliente" + PROMPT 2 1 "" + MESSAGE _STREXPR,LF_DOC->CODCF+" "+LF_CLIFO->RAGSOC + END + END + + // Raggruppamento di tutte le righe (intestazioni documenti) per lo stesso cliente + SECTION DOCUMENTI 2 1 1 FILE LF_RIGHEDOC GROUP LF_CLIFO->TIPOCF+LF_CLIFO->CODCF + FLAGS "D" + NUMBER 101 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 102 40 2 + BEGIN + KEY "Descrizione documento" + PROMPT 2 1 "" + MESSAGE _STREXPR,"*Doc. "+LF_DOC->CODNUM+"/"+LF_DOC->NDOC+" del "+LF_DOC->DATADOC + END + + STRING 103 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FIELD LF_DOC->CODVAL + END + + DATA 104 10 + BEGIN + KEY "Data consegna documento" + PROMPT 4 1 "" + FIELD LF_DOC->DATACONS + END + + NUMBER 105 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_DOC->TOTVALORE + MESSAGE _ORDINE,VALTABLE,VALORD + PICTURE "." + END + + NUMBER 106 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_DOC->TOTVALRES + MESSAGE _ORDINE,VALTABLE,VALRES + PICTURE "." + END + + // Raggruppamento righe stesso documento + SECTION RIGHEDOC 2 1 1 FILE LF_RIGHEDOC GROUP NDOC + FLAGS "D" // Da abilitare solo su dettaglio righe + NUMBER 201 10 + BEGIN + PROMPT 1 1 "" + END + STRING 202 40 2 + BEGIN + KEY "Descrizione articolo" + PROMPT 2 1 "" + MESSAGE _STREXPR,"**Art. "+LF_RIGHEDOC->CODART+" "+LF_ANAMAG->DESCR + END + STRING 203 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + END + DATA 204 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FIELD LF_RIGHEDOC->DATACONS + END + NUMBER 205 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_RIGHEDOC->RIGAVALORE + PICTURE "." + END + NUMBER 206 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_RIGHEDOC->RIGAVALRES + PICTURE "." + END + STRINGA 207 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FIELD LF_RIGHEDOC->UMQTA + END + NUMBER 208 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + FIELD LF_RIGHEDOC->QTA + PICTURE "#@,@@@" + END + NUMBER 209 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + FIELD LF_RIGHEDOC->QTAEVASA + PICTURE "#@,@@@" + END + END // END SECTION RIGHEDOC + END // END SECTION DOCUMENTI + + // Ragruppamento eventuale per cliente in caso di stampa righe articolo; + // viene settato a LF_CLIFO->TIPOCF+LF_CLIFO->CODCF dal programma nel + // caso l'utente decida di distinguere per cliente. + + SECTION ARTCLI 2 1 1 FILE LF_RIGHEDOC //GROUP + // Ecco la sezione per raggruppamento/dettaglio per riga articolo + FLAGS "D" // Sezione abilitata se non si stampa per documenti + + SECTION RIGHEART 1 0 0 FILE LF_RIGHEDOC GROUP CODVAL+CODART+DATACONS + //FLAGS "D" + NUMBER 301 10 + BEGIN + PROMPT 1 1 "" + FLAGS "H" + END + STRING 302 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + MESSAGE _ORDINE,DESCRIZIONE|COPY,402 + FLAGS "H" + END + STRING 303 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FIELD LF_DOC->CODVAL + MESSAGE COPY,403 + FLAGS "H" + END + DATA 304 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FIELD LF_RIGHEDOC->DATACONS + MESSAGE COPY,404 + FLAGS "H" + END + NUMBER 305 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_RIGHEDOC->RIGAVALORE + MESSAGE _ORDINE,VALTABLE,VALORD|ADD,405 + PICTURE "." + FLAGS "H" + END + NUMBER 306 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_RIGHEDOC->RIGAVALRES + PICTURE "." + FLAGS "H" + MESSAGE _ORDINE,VALTABLE,VALRES|ADD,406 + END + STRINGA 307 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FIELD LF_RIGHEDOC->UMQTA + MESSAGE _ORDINE,SELECTUM|COPY,407 + FLAGS "H" + END + NUMBER 308 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + FIELD LF_RIGHEDOC->QTA + MESSAGE _ORDINE,CONVUM|ADD,408 + FLAGS "H" + END + NUMBER 309 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + FIELD LF_RIGHEDOC->QTAEVASA + MESSAGE _ORDINE,CONVUM|ADD,409 + FLAGS "H" + END + END // END SECTION RIGHEART + + // Totalizers for previous section + NUMBER 401 10 + BEGIN + PROMPT 1 1 "" + //FLAGS "D" + END + STRING 402 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + //FLAGS "D" + END + STRING 403 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + //FLAGS "D" + END + DATA 404 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + //FLAGS "D" + END + NUMBER 405 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + PICTURE "." + //FLAGS "D" + GROUP G_TOTALEART + END + NUMBER 406 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + PICTURE "." + //FLAGS "D" + GROUP G_TOTALEART + END + STRINGA 407 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + //FLAGS "D" + GROUP G_TOTALEART + END + NUMBER 408 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + PICTURE "#@,@@@" + //FLAGS "D" + GROUP G_TOTALEART + END + NUMBER 409 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + PICTURE "#@,@@@" + //FLAGS "D" + GROUP G_TOTALEART + END + + END // END SECTION ARTCLI + +END // END SECTION AGENTI + +// Sezioni di totalizzazione per Valuta (4, shown & hidden at runtime by VALTABLE messages in application code) + +SECTION TOTVAL1 3 0 1 GROUP +FLAGS "D" + NUMBER 51 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 52 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 53 4 + BEGIN + KEY "Codice valuta #1" + PROMPT 3 1 "" + END + + DATA 54 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 55 15 + BEGIN + KEY "Tot Valore Ordinato per agente" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 56 15 + BEGIN + KEY "Tot Valore Residuo per agente" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #1 + + +SECTION TOTVAL2 1 0 1 GROUP +FLAGS "D" + NUMBER 61 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 62 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 63 4 + BEGIN + KEY "Codice valuta #2" + PROMPT 3 1 "" + END + + DATA 64 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 65 15 + BEGIN + KEY "Tot Valore Ordinato per agente" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 66 15 + BEGIN + KEY "Tot Valore Residuo per agente" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #2 + + +SECTION TOTVAL3 1 0 1 GROUP +FLAGS "D" + NUMBER 71 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 72 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 73 4 + BEGIN + KEY "Codice valuta #3" + PROMPT 3 1 "" + END + + DATA 74 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 75 15 + BEGIN + KEY "Tot Valore Ordinato per agente" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 76 15 + BEGIN + KEY "Tot Valore Residuo per agente" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #3 + +SECTION TOTVAL4 1 0 1 GROUP +FLAGS "D" + NUMBER 81 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 82 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 83 4 + BEGIN + KEY "Codice valuta #4" + PROMPT 3 1 "" + END + + DATA 84 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 85 15 + BEGIN + KEY "Tot Valore Ordinato per agente" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 86 15 + BEGIN + KEY "Tot Valore Residuo per agente" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #4 + +END // End of Body + + diff --git a/or/or1100d.frm b/or/or1100d.frm new file mode 100755 index 000000000..85d42040a --- /dev/null +++ b/or/or1100d.frm @@ -0,0 +1,446 @@ +// Form per la stampa ordini per articolo +#include "or1100a.h" +// Cursor sorting on main file is set also in application +USE LF_RIGHEDOC BY CODART CODNUM NDOC CODART DATACONS +JOIN LF_DOC INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC +JOIN LF_ANAMAG INTO CODART==CODART +END + +DESCRIPTION +BEGIN +END + + +GENERAL +BEGIN + OFFSET 0 0 + FONT "Courier New" + SIZE 10 +END + + +SECTION HEADER ODD 6 + +STRINGA 1 40 1 +BEGIN + KEY "nome ditta" + PROMPT 1 1 "Ditta " + MESSAGE _DITTA, !RAGSOC +END + +STRINGA 2 10 +BEGIN + KEY "Data" + PROMPT 76 1 "Data " + MESSAGE _TODAY +END + +NUMERO 3 7 +BEGIN + KEY "Nr. pagina" + PROMPT 92 1 "Pagina " + MESSAGE _PAGENO +END + +NUMERO 4 40 +BEGIN + KEY "Intestazione stampa" + PROMPT 40 2 "Stampa ordini per articolo" +END + +END //HEADER + + +SECTION BODY ODD 4 COLUMNWISE + +STRINGA 1 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Codice" "Codice" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "X " "Fincatura sinistra e destra" + KEY "Codice" + PROMPT 1 1 "@B" + FIELD LF_RIGHEDOC->CODART + MESSAGE _ORDINE,VALTABLE,RESET + PICTURE "########" +END + +STRING 2 40 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Descrizione" "Descrizione" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA " X" "Fincatura sinistra e destra" + KEY "Descrizione art." + PROMPT 2 1 "" + FIELD LF_ANAMAG->DESCR +END + +STRINGA 3 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Val." "Val." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Codice Valuta" + PROMPT 3 1 "" +END + +DATA 4 10 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Data cons." "Data cons." + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Data consegna articolo" + PROMPT 4 1 "" +END + +NUMBER 5 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CValore" "Valore" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore" + PROMPT 5 1 "" +END + +NUMBER 6 15 +BEGIN + SPECIAL STRINGA INTESTAZIONE "@CVal.Residuo" "Val.Residuo" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Valore Residuo" + PROMPT 6 1 "" +END + +STRINGA 7 4 +BEGIN + SPECIAL STRINGA INTESTAZIONE "UM" "UM" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Unita' di misura" // Solo intestazione + PROMPT 7 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 8 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Ordinata" "Q.ta Ordinata" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Ordinata" // Solo intestazione + PROMPT 8 1 "" + GROUP G_DETTAGLIO +END + +STRINGA 9 13 +BEGIN + SPECIAL STRINGA INTESTAZIONE "Q.ta Evasa" "Q.ta Evasa" + SPECIAL NUMERO OFFSET "0" "Offset iniziale campo" + SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra" + KEY "Q.ta Evasa" // Solo intestazione + PROMPT 9 1 "" + GROUP G_DETTAGLIO +END + +// Raggruppamento righe documenti per lo stesso codice articolo +SECTION ARTMAIN 2 1 1 FILE LF_RIGHEDOC GROUP CODART + +SECTION ARTICOLI 1 0 0 FILE LF_RIGHEDOC GROUP CODVAL+DATACONS + FLAGS "D" + NUMBER 301 10 + BEGIN + PROMPT 1 1 "" + FLAGS "H" + END + STRING 302 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + MESSAGE _ORDINE,DESCRIZIONE|COPY,402 + FLAGS "H" + END + STRING 303 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FIELD LF_DOC->CODVAL + MESSAGE COPY,403 + FLAGS "H" + END + DATA 304 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FIELD LF_RIGHEDOC->DATACONS + MESSAGE COPY,404 + FLAGS "H" + END + NUMBER 305 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + FIELD LF_RIGHEDOC->RIGAVALORE + MESSAGE _ORDINE,VALTABLE,VALORD|ADD,405 + PICTURE "." + FLAGS "H" + END + NUMBER 306 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + FIELD LF_RIGHEDOC->RIGAVALRES + PICTURE "." + FLAGS "H" + MESSAGE _ORDINE,VALTABLE,VALRES|ADD,406 + END + STRINGA 307 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FIELD LF_RIGHEDOC->UMQTA + MESSAGE _ORDINE,SELECTUM|COPY,407 + FLAGS "H" + END + NUMBER 308 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + FIELD LF_RIGHEDOC->QTA + MESSAGE _ORDINE,CONVUM|ADD,408 + FLAGS "H" + END + NUMBER 309 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + FIELD LF_RIGHEDOC->QTAEVASA + MESSAGE _ORDINE,CONVUM|ADD,409 + FLAGS "H" + END +END // END SECTION ARTICOLI + +// Totalizers for previous section +NUMBER 401 10 + BEGIN + PROMPT 1 1 "" + FLAGS "D" +END +STRING 402 40 2 + BEGIN + KEY "Descrizione" + PROMPT 2 1 "" + FLAGS "D" +END +STRING 403 4 + BEGIN + KEY "Codice Valuta" + PROMPT 3 1 "" + FLAGS "D" +END +DATA 404 10 + BEGIN + KEY "Data consegna articolo" + PROMPT 4 1 "" + FLAGS "D" +END +NUMBER 405 15 + BEGIN + KEY "Valore Ordinato" + PROMPT 5 1 "" + PICTURE "." + FLAGS "D" + //MESSAGE _ORDINE,VALTABLE,VALORD + GROUP G_TOTALEART +END +NUMBER 406 15 + BEGIN + KEY "Valore Residuo" + PROMPT 6 1 "" + PICTURE "." + FLAGS "D" + //MESSAGE _ORDINE,VALTABLE,VALRES + GROUP G_TOTALEART +END +STRINGA 407 4 + BEGIN + KEY "Unita' di misura" + PROMPT 7 1 "" + FLAGS "D" + GROUP G_TOTALEART + END +NUMBER 408 13 + BEGIN + KEY "Q.ta Ordinata" + PROMPT 8 1 "" + PICTURE "#@,@@@" + FLAGS "D" + GROUP G_TOTALEART +END +NUMBER 409 13 + BEGIN + KEY "Q.ta Evasa" + PROMPT 9 1 "" + PICTURE "#@,@@@" + FLAGS "D" + GROUP G_TOTALEART +END + +END // SEZIONE ARTMAIN +// Sezioni di totalizzazione per Valuta (4, shown & hidden at runtime by VALTABLE messages in application code) + +SECTION TOTVAL1 3 0 1 GROUP +FLAGS "D" + NUMBER 51 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 52 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 53 4 + BEGIN + KEY "Codice valuta #1" + PROMPT 3 1 "" + END + + DATA 54 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 55 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 56 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #1 + + +SECTION TOTVAL2 1 0 1 GROUP +FLAGS "D" + NUMBER 61 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 62 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 63 4 + BEGIN + KEY "Codice valuta #2" + PROMPT 3 1 "" + END + + DATA 64 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 65 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 66 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #2 + + +SECTION TOTVAL3 1 0 1 GROUP +FLAGS "D" + NUMBER 71 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 72 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 73 4 + BEGIN + KEY "Codice valuta #3" + PROMPT 3 1 "" + END + + DATA 74 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 75 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 76 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #3 + +SECTION TOTVAL4 1 0 1 GROUP +FLAGS "D" + NUMBER 81 10 + BEGIN + PROMPT 1 1 "" + END + + STRING 82 40 + BEGIN + PROMPT 2 1 "" + END + + STRINGA 83 4 + BEGIN + KEY "Codice valuta #4" + PROMPT 3 1 "" + END + + DATA 84 10 + BEGIN + PROMPT 4 1 "" + END + + NUMBER 85 15 + BEGIN + KEY "Tot Valore Ordinato per cli/fo" + PROMPT 5 1 "" + PICTURE "." + END + + NUMBER 86 15 + BEGIN + KEY "Tot Valore Residuo per cli/fo" + PROMPT 6 1 "" + PICTURE "." + END +END // Fine sezione totale in valuta #4 + +END // End of Body + + diff --git a/or/or1200.cpp b/or/or1200.cpp new file mode 100755 index 000000000..9bfd86d6b --- /dev/null +++ b/or/or1200.cpp @@ -0,0 +1,36 @@ +// Stampa dettaglio disponibilita' articoli +#include + +class TStampa_dettaglio_articoli : public TSkeleton_application +{ + +protected: + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); +public: + TStampa_dettaglio_articoli() {}; + virtual ~TStampa_dettaglio_articoli() {}; +}; + +bool TStampa_dettaglio_articoli::create() +{ + return TSkeleton_application::create(); +} + +bool TStampa_dettaglio_articoli::destroy() +{ + return TSkeleton_application::destroy(); +} + +void TStampa_dettaglio_articoli::main_loop() +{ + sorry_box("Programma non ancora implementato."); +} + +int or1200(int argc, char** argv) +{ + TStampa_dettaglio_articoli a; + a.run(argc,argv,"Stampa dettaglio articoli"); + return 0; +} diff --git a/or/or1300.cpp b/or/or1300.cpp new file mode 100755 index 000000000..9ea86664a --- /dev/null +++ b/or/or1300.cpp @@ -0,0 +1,36 @@ +// Stampa statistiche sui tempi di consegna +#include + +class TStampa_statistiche_consegna : public TSkeleton_application +{ + +protected: + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); +public: + TStampa_statistiche_consegna() {}; + virtual ~TStampa_statistiche_consegna() {}; +}; + +bool TStampa_statistiche_consegna::create() +{ + return TSkeleton_application::create(); +} + +bool TStampa_statistiche_consegna::destroy() +{ + return TSkeleton_application::destroy(); +} + +void TStampa_statistiche_consegna::main_loop() +{ + sorry_box("Programma non ancora implementato."); +} + +int or1300(int argc, char** argv) +{ + TStampa_statistiche_consegna a; + a.run(argc,argv,"Stampa tempi di consegna"); + return 0; +}