Aggiunta stampa lista documenti.
git-svn-id: svn://10.65.10.50/trunk@4190 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
870b4c965f
commit
a20f793f78
208
ve/listadoc.frm
Executable file
208
ve/listadoc.frm
Executable file
@ -0,0 +1,208 @@
|
||||
USE 33
|
||||
JOIN %TIP TO 33 INTO CODTAB==TIPODOC
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
33->* "Documenti di vendita"
|
||||
20->* "Clienti/Fornitori"
|
||||
%TIP->* "Tabella tipi documento"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Courier New"
|
||||
SIZE 12
|
||||
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 120 1 "Data "
|
||||
MESSAGE _DATA
|
||||
END
|
||||
|
||||
NUMERO 3 7
|
||||
BEGIN
|
||||
KEY "Nr. pagina"
|
||||
PROMPT 137 1 "Pagina "
|
||||
MESSAGE _PAGENO
|
||||
END
|
||||
|
||||
NUMERO 4 25
|
||||
BEGIN
|
||||
KEY "Intestazione stampa"
|
||||
PROMPT 45 2 "Stampa lista documenti"
|
||||
END
|
||||
|
||||
STRINGA 5 146
|
||||
BEGIN
|
||||
KEY "Separatore (iniziale)"
|
||||
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
|
||||
END
|
||||
|
||||
STRINGA 6 8
|
||||
BEGIN
|
||||
KEY "Intestazione (Cod. numerazione)"
|
||||
PROMPT 1 4 "Cod. num."
|
||||
END
|
||||
|
||||
STRINGA 7 9
|
||||
BEGIN
|
||||
KEY "Intestazione (Tipo doc.)"
|
||||
PROMPT 11 4 "Tipo doc."
|
||||
END
|
||||
|
||||
STRINGA 8 8
|
||||
BEGIN
|
||||
KEY "Intestazione (Numero doc.)"
|
||||
PROMPT 22 4 "Nr. doc."
|
||||
END
|
||||
|
||||
STRINGA 9 9
|
||||
BEGIN
|
||||
KEY "Intestazione (Data doc.)"
|
||||
PROMPT 31 4 "Data doc."
|
||||
END
|
||||
|
||||
STRINGA 10 7
|
||||
BEGIN
|
||||
KEY "Intestazione (Cliente)"
|
||||
PROMPT 48 4 "Cliente"
|
||||
END
|
||||
|
||||
STRINGA 11 10
|
||||
BEGIN
|
||||
KEY "Intestazione (Stato doc.)"
|
||||
PROMPT 75 4 "Stato doc."
|
||||
END
|
||||
|
||||
STRINGA 12 10
|
||||
BEGIN
|
||||
KEY "Intestazione (Imponibile)"
|
||||
PROMPT 86 4 "Imponibile"
|
||||
END
|
||||
|
||||
STRINGA 13 10
|
||||
BEGIN
|
||||
KEY "Intestazione (Spese)"
|
||||
PROMPT 111 4 "Spese"
|
||||
END
|
||||
|
||||
STRINGA 14 10
|
||||
BEGIN
|
||||
KEY "Intestazione (IVA)"
|
||||
PROMPT 128 4 "IVA"
|
||||
END
|
||||
|
||||
STRINGA 15 14
|
||||
BEGIN
|
||||
KEY "Intestazione (Importo totale)"
|
||||
PROMPT 132 4 "Importo totale"
|
||||
END
|
||||
|
||||
STRINGA 16 146
|
||||
BEGIN
|
||||
KEY "Separatore (finale)"
|
||||
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------------------------"
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION BODY ODD 2
|
||||
|
||||
STRINGA 17 4
|
||||
BEGIN
|
||||
KEY "Codice numerazione"
|
||||
PROMPT 1 1 ""
|
||||
FIELD 33->CODNUM
|
||||
END
|
||||
|
||||
STRINGA 18 9
|
||||
BEGIN
|
||||
KEY "Tipo documento"
|
||||
PROMPT 11 1 ""
|
||||
FIELD %TIP->S0
|
||||
END
|
||||
|
||||
NUMERO 19 7
|
||||
BEGIN
|
||||
KEY "Numero documento"
|
||||
PROMPT 22 1 ""
|
||||
FIELD 33->NDOC
|
||||
PICTURE "#######"
|
||||
END
|
||||
|
||||
DATA 20 10
|
||||
BEGIN
|
||||
KEY "Data documento"
|
||||
PROMPT 31 1 ""
|
||||
FILED 33->DATADOC
|
||||
END
|
||||
|
||||
NUMERO 21 7
|
||||
BEGIN
|
||||
KEY "Codice cliente"
|
||||
PROMPT 42 1 ""
|
||||
FIELD 33->CODCF
|
||||
PICTURE "#######"
|
||||
END
|
||||
|
||||
STRINGA 22 25 2
|
||||
BEGIN
|
||||
KEY "Cliente ragione sociale"
|
||||
PROMPT 51 1 ""
|
||||
MESSAGE _CLIENTE,!RAGSOC
|
||||
END
|
||||
|
||||
STRINGA 23 1
|
||||
BEGIN
|
||||
KEY "Stato documento"
|
||||
PROMPT 76 1 ""
|
||||
FIELD 33->STATO
|
||||
END
|
||||
|
||||
NUMBER 24 15
|
||||
BEGIN
|
||||
KEY "Totale imponibile"
|
||||
PROMPT 86 1 ""
|
||||
MESSAGE _TOTIMPONIBILI,1
|
||||
PICTURE "###.###.###.###"
|
||||
END
|
||||
|
||||
NUMBER 25 15
|
||||
BEGIN
|
||||
KEY "Spese"
|
||||
PROMPT 101 1 ""
|
||||
PICTURE "###.###.###.###"
|
||||
FIELD TOTSPE
|
||||
END
|
||||
|
||||
NUMBER 26 15
|
||||
BEGIN
|
||||
KEY "Totale imposte"
|
||||
PROMPT 116 1 ""
|
||||
FIELD IMPOSTE
|
||||
PICTURE "###.###.###.###"
|
||||
END
|
||||
|
||||
NUMBER 27 15
|
||||
BEGIN
|
||||
KEY "Totale documento"
|
||||
PROMPT 131 1 ""
|
||||
FIELD TOTDOC
|
||||
PICTURE "###.###.###.###"
|
||||
END
|
||||
|
||||
END
|
||||
|
@ -2,7 +2,7 @@
|
||||
#include <checks.h>
|
||||
#include <xvt.h>
|
||||
|
||||
extern int ve1100(int argc, char* argv[]); // stampa documenti di vendita tramite form derivati
|
||||
extern int ve1100(int argc, char** argv); // stampa documenti di vendita tramite form derivati
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
int rt= -1;
|
||||
@ -10,7 +10,7 @@ int main(int argc, char **argv) {
|
||||
|
||||
switch (r) {
|
||||
case 0: rt= ve1100(argc, argv); break;
|
||||
default: error_box("Sintassi: %s [-0 [params]]", argv[0]); break;
|
||||
default: error_box("Sintassi: %s [-0 {[params]|[L]}]", argv[0]); break;
|
||||
}
|
||||
return (rt);
|
||||
}
|
||||
|
15
ve/ve1.url
15
ve/ve1.url
@ -8,23 +8,12 @@ SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(1)
|
||||
/* ve1 -0 */
|
||||
MENUBAR MENU_BAR(1)
|
||||
|
||||
MENU MENU_BAR(1)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
||||
MENUBAR MENU_BAR(2)
|
||||
|
||||
MENU MENU_BAR(2)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
MENUBAR MENU_BAR(3)
|
||||
|
||||
MENU MENU_BAR(3)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
ITEM BAR_ITEM(1) "~Parametri"
|
||||
|
||||
|
||||
|
160
ve/ve1100.cpp
160
ve/ve1100.cpp
@ -18,7 +18,8 @@
|
||||
#include "velib02.h"
|
||||
|
||||
|
||||
#define Usage "Usage: ve1 -1 [codnum anno {D|P} dalnum alnum {D|P} [ncopie]]"
|
||||
#define LISTADOC "listadoc"
|
||||
#define Usage "Usage: ve1 -0 {[codnum anno {D|P} dalnum alnum {D|P} [ncopie]] | [L]}"
|
||||
|
||||
// Queste classi (TDocisamfile e TRDocisamfile) servono nel costruttore di TDocumento_form
|
||||
// in modo da sostituire i file della relazione, ovvero LF_DOC e LF_RIGHEDOC.
|
||||
@ -28,13 +29,26 @@
|
||||
|
||||
class TDocisamfile : public TLocalisamfile
|
||||
{
|
||||
TDocumento *_doc;
|
||||
TDocumentoEsteso *_doc;
|
||||
public:
|
||||
virtual TRectype& curr() const { return (TRectype&) *_doc; }
|
||||
TDocisamfile(TDocumento* doc) : TLocalisamfile(LF_DOC) { _doc = doc;}
|
||||
virtual int readat(TRecnotype nrec, word lockop = _nolock);
|
||||
TDocisamfile(TDocumentoEsteso* doc) : TLocalisamfile(LF_DOC) { _doc = doc;}
|
||||
virtual ~TDocisamfile() {};
|
||||
};
|
||||
|
||||
int TDocisamfile::readat(TRecnotype nrec, word lockop)
|
||||
{
|
||||
int err = TBaseisamfile::readat(nrec, _nolock);
|
||||
if (err == NOERR)
|
||||
if ((err=_doc->read(curr())) == NOERR)
|
||||
{
|
||||
_doc->summary_reset();
|
||||
_doc->summary_filter(1);
|
||||
}
|
||||
return err;
|
||||
//return err == NOERR ? _doc->read(curr()) : err;
|
||||
}
|
||||
class TRDocisamfile : public TLocalisamfile
|
||||
{
|
||||
TDocumento *_doc;
|
||||
@ -65,6 +79,7 @@ class TDocumento_form : public TForm
|
||||
TString_array _exclude_array; // array di coppie tipo/articolo da escludere dalla stampa
|
||||
TDocumentoEsteso * _doc; // Documento da stampare
|
||||
bool _valid, _cli_loaded; // flag che indica se il form e' valido | se l'oggetto cliente è già stato caricato
|
||||
bool _is_lista; // flag che indica se il form e' usato per la stampa della lista documenti
|
||||
TString_array _group_decimals; // Array di TToken_string per ogni gruppo definito in GENERAL.
|
||||
// Il primo elelemento della token_string conterra' il numero del gruppo
|
||||
// il secondo il n.ro di decimali per importi in lire ed il terzo il n.ro
|
||||
@ -104,6 +119,7 @@ public:
|
||||
TString_array & exclude_list() { return _exclude_array; }
|
||||
TDocumentoEsteso& doc() { return *_doc; }
|
||||
TDocumento_form(TRectype&/*TDocumentoEsteso **/ doc, TRelation& rel, const bool definitiva, const bool interattivo);
|
||||
TDocumento_form(const char* form, TRelation& rel);
|
||||
virtual ~TDocumento_form();
|
||||
};
|
||||
|
||||
@ -155,6 +171,7 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
|
||||
read(nomeform);
|
||||
_cliente= new TCliFor;
|
||||
_cli_loaded= FALSE;
|
||||
_is_lista = FALSE;
|
||||
|
||||
_doc = new TDocumentoEsteso(doc); // istanzia TDocumentoEsteso
|
||||
_docfile = new TDocisamfile(_doc);
|
||||
@ -194,6 +211,20 @@ TDocumento_form::TDocumento_form(TRectype&/*TDocumentoEsteso**/ doc, TRelation&
|
||||
pr.footerlen(foot.height());
|
||||
}
|
||||
|
||||
// costruttore per stampa lista documenti (uso convenzionale dei forms)
|
||||
TDocumento_form::TDocumento_form(const char* form, TRelation& rel): TForm(form), _firmrel(rel), _valid(FALSE)
|
||||
{
|
||||
_is_lista = TRUE;
|
||||
_rdocfile=NULL;
|
||||
_tip = new TTable("%TIP");
|
||||
_tab = new TLocalisamfile(LF_TAB);
|
||||
_cliente= new TCliFor;
|
||||
_cli_loaded= FALSE;
|
||||
_doc = new TDocumentoEsteso;
|
||||
_docfile = new TDocisamfile(_doc);
|
||||
relation()->replace(_docfile,0);
|
||||
}
|
||||
|
||||
TDocumento_form::~TDocumento_form()
|
||||
{
|
||||
delete _cliente;
|
||||
@ -649,7 +680,7 @@ bool TDocumento_form::validate(TForm_item &cf, TToken_string &s) {
|
||||
// + %COMUNI (213@) Comune di nascita
|
||||
TLocalisamfile &doc= (cursor())->file(LF_DOC);
|
||||
TString16 tipocf= doc.get("TIPOCF"), codcf= doc.get("CODCF"), ocfpi= doc.get("OCFPI");
|
||||
if (!_cli_loaded ) { // il cliente è sulla testata del documento di vendita, quindi può essere caricato una volta sola per tutte
|
||||
if (!_cli_loaded || _is_lista) { // il cliente è sulla testata del documento di vendita, quindi può essere caricato una volta sola per tutte
|
||||
_cliente->load(tipocf[0], atol(codcf), ocfpi);
|
||||
_cliente->add(LF_COMUNI, "COM=STATOCF+COMCF", 1, LF_CLIFO, 100+LF_COMUNI);
|
||||
_cliente->add(LF_COMUNI, "COM=STATONASC+COMNASC", 1, LF_CLIFO, 200+LF_COMUNI);
|
||||
@ -659,7 +690,10 @@ bool TDocumento_form::validate(TForm_item &cf, TToken_string &s) {
|
||||
if (in[0]=='!') {
|
||||
in.ltrim(1);
|
||||
if (in=="RAGSOC")
|
||||
{
|
||||
valore = _cliente->get(LF_CLIFO, "RAGSOC");
|
||||
valore.strip_d_spaces();
|
||||
}
|
||||
if (in=="IND")
|
||||
valore = _cliente->get(LF_CLIFO, "INDCF");
|
||||
if (in=="NUM")
|
||||
@ -791,6 +825,13 @@ bool TDocumento_form::validate(TForm_item &cf, TToken_string &s) {
|
||||
cf.put_paragraph(pg);
|
||||
}
|
||||
|
||||
// Messaggio per stampare la data di oggi
|
||||
if (code== "_DATA")
|
||||
{
|
||||
TString16 pg(TDate(TODAY).string());
|
||||
cf.put_paragraph(pg);
|
||||
}
|
||||
|
||||
if (code== "_RIEPILOGOIVA") {
|
||||
// tabella riepilogo aliquote iva e relative imposte
|
||||
// sintassi: _RIEPILOGOIVA,<selettore>,<macro>,<cambio codice>
|
||||
@ -924,6 +965,7 @@ class TStampaDoc_application: public TApplication
|
||||
long _dalnum, _alnum; // estremi di numerazione dei documenti
|
||||
TDate _dadata, _adata; // estremi di data dei documenti
|
||||
bool _interattivo; // flag che indica se il prog. funziona in interattivo o in batch
|
||||
bool _is_lista; // flga che indica se e' stata selezionata la lista documenti
|
||||
bool _definitiva; // flag che indica se la stampa è definitiva o no
|
||||
TRelation *_firmrel; // puntatore alla relazione che gestisce i dati della ditta corrente
|
||||
TDocumento_form *_form; // puntatore al form di stampa
|
||||
@ -977,7 +1019,7 @@ void TStampaDoc_application::print_selected()
|
||||
error_box("Non vi sono documenti da stampare nell'intervallo indicato");
|
||||
return;
|
||||
}
|
||||
_definitiva= query_final_print(); // legge il flag di stampa definitiva
|
||||
if (!_is_lista) _definitiva= query_final_print(); // legge il flag di stampa definitiva
|
||||
|
||||
TPrinter& pr = printer();
|
||||
pr.open();
|
||||
@ -985,51 +1027,60 @@ void TStampaDoc_application::print_selected()
|
||||
TProgind* pi = pr.printtype() != screenvis ?
|
||||
new TProgind(cur.items(),"Stampa documenti in corso...",FALSE,TRUE,10) :
|
||||
NULL;
|
||||
|
||||
cur.setregion(darec, arec);
|
||||
const long items = cur.items();
|
||||
behaviour whattodo = go;
|
||||
bool first_inst = TRUE;
|
||||
//TDocumentoEsteso *documento = new TDocumentoEsteso;
|
||||
//cur.file().set_curr(documento);
|
||||
for (long i = 0; i < items; i++)
|
||||
if (!_is_lista)
|
||||
{
|
||||
cur = i; // Posiziona il documento
|
||||
_form = new TDocumento_form(cur.curr()/*documento*/, *_firmrel, _definitiva, _interattivo); // Istanzia il form
|
||||
|
||||
if (!_form->valid()) break; // interrompe la stampa se il doc corrente non e' tra i tipi validi
|
||||
const TString &modulo= _form->get_module_code(); // legge dal form il codice del modulo di carta per la stampa
|
||||
if (modulo_prec.empty()) modulo_prec = modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
|
||||
else first_inst = FALSE;
|
||||
const bool module_changed = modulo != modulo_prec;
|
||||
if (first_inst || module_changed)
|
||||
if (!_form->doc_arrange()) // Setta l'offset o posiziona manualmente
|
||||
break; // Se vi sono errori interrompe la stampa
|
||||
if (module_changed) whattodo = on_module_change(modulo, modulo_prec); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
|
||||
if (whattodo==cancel) break; // se non si può procedere la stampa viene interrotta
|
||||
if (whattodo==skip) continue; // Salta il documento corrente
|
||||
// altrimenti prosegue
|
||||
|
||||
// Carica il numero di copie da stampare per questo form
|
||||
int ncopie = _ncopie == 0 ? _form->ncopie() : _ncopie; // Numero di copie da stampare per questo documento
|
||||
if (ncopie == 0) ncopie = 1;
|
||||
|
||||
for (int n=0; n < ncopie; n++)
|
||||
cur.setregion(darec, arec);
|
||||
const long items = cur.items();
|
||||
behaviour whattodo = go;
|
||||
bool first_inst = TRUE;
|
||||
//TDocumentoEsteso *documento = new TDocumentoEsteso;
|
||||
//cur.file().set_curr(documento);
|
||||
for (long i = 0; i < items; i++)
|
||||
{
|
||||
print_documento();
|
||||
_form->doc().summary_reset();
|
||||
_form->doc().scadenze_reset();
|
||||
}
|
||||
delete _form;
|
||||
|
||||
if (_definitiva && (numerazione_definitiva(doc) != NOERR))
|
||||
{ // se la stampa è definitiva viene lanciata la procedura di rinumerazione
|
||||
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
|
||||
break;
|
||||
}
|
||||
}
|
||||
cur = i; // Posiziona il documento
|
||||
_form = new TDocumento_form(cur.curr()/*documento*/, *_firmrel, _definitiva, _interattivo); // Istanzia il form
|
||||
|
||||
if (!_form->valid()) break; // interrompe la stampa se il doc corrente non e' tra i tipi validi
|
||||
const TString &modulo= _form->get_module_code(); // legge dal form il codice del modulo di carta per la stampa
|
||||
if (modulo_prec.empty()) modulo_prec = modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
|
||||
else first_inst = FALSE;
|
||||
const bool module_changed = modulo != modulo_prec;
|
||||
if (first_inst || module_changed)
|
||||
if (!_form->doc_arrange()) // Setta l'offset o posiziona manualmente
|
||||
break; // Se vi sono errori interrompe la stampa
|
||||
if (module_changed) whattodo = on_module_change(modulo, modulo_prec); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
|
||||
if (whattodo==cancel) break; // se non si può procedere la stampa viene interrotta
|
||||
if (whattodo==skip) continue; // Salta il documento corrente
|
||||
// altrimenti prosegue
|
||||
|
||||
// Non viene fatta la delete documento perche' gia' presente nella distruzione del cursore, avendo fatto una set_curr()
|
||||
// Carica il numero di copie da stampare per questo form
|
||||
int ncopie = _ncopie == 0 ? _form->ncopie() : _ncopie; // Numero di copie da stampare per questo documento
|
||||
if (ncopie == 0) ncopie = 1;
|
||||
|
||||
for (int n=0; n < ncopie; n++)
|
||||
{
|
||||
print_documento();
|
||||
_form->doc().summary_reset();
|
||||
_form->doc().scadenze_reset();
|
||||
}
|
||||
delete _form;
|
||||
|
||||
if (_definitiva && (numerazione_definitiva(doc) != NOERR))
|
||||
{ // se la stampa è definitiva viene lanciata la procedura di rinumerazione
|
||||
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Non viene fatta la delete documento perche' gia' presente nella distruzione del cursore, avendo fatto una set_curr()
|
||||
}
|
||||
else // Lista documenti
|
||||
{
|
||||
_form = new TDocumento_form(LISTADOC,*_firmrel);
|
||||
_form->cursor()->setregion(darec,arec);
|
||||
_form->print();
|
||||
delete _form;
|
||||
}
|
||||
|
||||
if (pi != NULL) delete pi;
|
||||
printer().close();
|
||||
@ -1148,7 +1199,7 @@ bool TStampaDoc_application::create()
|
||||
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI);
|
||||
const int argc = TApplication::argc();
|
||||
|
||||
if (argc>2)
|
||||
if (argc>3)
|
||||
{ // lettura dei parametri iniziali dalla linea di comando
|
||||
_codnum= argv(2); // il primo parametro è il codice di numerazione
|
||||
_anno= atoi(argv(3)); // il secondo è l'anno
|
||||
@ -1173,13 +1224,16 @@ bool TStampaDoc_application::create()
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
if (argc == 2)
|
||||
{
|
||||
_is_lista = argc == 3 && argv(2)[0] == 'L';
|
||||
if (argc == 2 || _is_lista)
|
||||
{ // oppure lancio della maschera
|
||||
_interattivo= TRUE;
|
||||
dispatch_e_menu(BAR_ITEM(1));
|
||||
}
|
||||
else
|
||||
return error_box(Usage);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1199,6 +1253,8 @@ void TStampaDoc_application::on_firm_change()
|
||||
bool TStampaDoc_application::select()
|
||||
{
|
||||
TMask m("ve1100a");
|
||||
|
||||
if (_is_lista) m.hide(F_NCOPIE);
|
||||
TString wdate;
|
||||
m.set_handler(F_DA_DATADOC, date2num_handler);
|
||||
m.set_handler(F_A_DATADOC, date2num_handler);
|
||||
@ -1231,10 +1287,12 @@ bool TStampaDoc_application::menu(MENU_TAG)
|
||||
}
|
||||
|
||||
// Do all the work!
|
||||
int ve1100(int argc, char* argv[])
|
||||
int ve1100(int argc, char** argv)
|
||||
{
|
||||
|
||||
TStampaDoc_application a;
|
||||
a.run(argc, argv, "Stampa documenti di vendita");
|
||||
const bool cond = argc == 4 && argv[2][0] == 'L'; // List documenti
|
||||
a.run(argc, argv, cond ? "Lista documenti" : "Stampa documenti di vendita");
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user