Sistemata stampa doc. vendita. Corretti bug stampe sconti e condiz. vendita.
git-svn-id: svn://10.65.10.50/trunk@1934 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
5964b25487
commit
a586455adb
@ -1,4 +1,6 @@
|
||||
#include "ve4.h"
|
||||
|
||||
#include "batbtip.h"
|
||||
//#include "ve4.h"
|
||||
|
||||
TOOLBAR "" 0 20 60 2
|
||||
|
||||
|
262
ve/ve1100.cpp
262
ve/ve1100.cpp
@ -1,3 +1,4 @@
|
||||
|
||||
#include <applicat.h>
|
||||
#include <config.h>
|
||||
#include <form.h>
|
||||
@ -10,43 +11,6 @@
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
|
||||
// !! fatto (in ordine d'esecuzione):
|
||||
// !! ------------------------------
|
||||
// !! - lettura parametri linea di comando per eventuale esecuzione batch
|
||||
// !! - impostazione di flag di interattività posto a true se non ci sono parametri sulla linea
|
||||
// !! di comando; influisce su:
|
||||
// !! - apertura maschera richiesta dati
|
||||
// !! - richiesta di stampa definitiva
|
||||
// !! - richiesta d'interruzione in caso di stato non valido durante stampa definitiva
|
||||
// !! - interruzione forzata in caso di impossibilità di rinumerazione definitiva
|
||||
// !! - impostazione di flag di stampa definitiva (da linea di comando o richiesta con box);
|
||||
// !! influisce su:
|
||||
// !! - controllo stati durante la stampa
|
||||
// !! - lancio della procedura di rinumerazione definitiva
|
||||
// !! - lettura tabelle codice numerazione e tipo documento
|
||||
// !! - lancio batch della stampa se sono presenti i parametri sulla linea di comando
|
||||
// !! - creazione e apertura della maschera e lettura dati
|
||||
// !! - impostazione della regione del cursore del form
|
||||
// !! - ciclo di lettura del form con stampa della posizione corrente e lancio (eventuale)
|
||||
// !! della rinumerazione
|
||||
// !! - intercettazione dei seguenti messaggi custom nel form:
|
||||
// !! - _ISAMREAD per letture generiche dal database
|
||||
// !! - _TABLEREAD per lettura generiche da tabelle del database
|
||||
// !! - _DITTA per ottenere dati di configurazione sulla ditta in uso
|
||||
// !! - _CIFRELETTERE per la conversione di un valore in lettere
|
||||
// !! - chiusura applicazione
|
||||
|
||||
// !! da fare:
|
||||
// !! -------
|
||||
// !! - verificare le messaggistiche verso l'utente e il controllo dell'interattività
|
||||
// !! - aggiungere lettura del tipo di modulo dal form (quando sarà fatto)
|
||||
// !! - completare routine di scelta di cosa fare al cambio del modulo
|
||||
// !! - aggiungere tutti gli altri messaggi di gestione dei documenti di vendita (clienti,
|
||||
// !! totalizzatori, calcoli, ecc.)
|
||||
// !! - tutto il resto!
|
||||
|
||||
|
||||
|
||||
#include "ve1100.h"
|
||||
#include "ve0100b.h"
|
||||
|
||||
@ -58,9 +22,12 @@
|
||||
|
||||
class TDocVen_Form: public TForm {
|
||||
TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente
|
||||
TString _module; // codice del modulo di carta associato a questo al form
|
||||
protected:
|
||||
virtual bool validate(TForm_item &, TToken_string &);
|
||||
virtual void extended_parse_general(TScanner &); // gestione dei parametri estesi nella sezione general
|
||||
virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi
|
||||
public:
|
||||
const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta
|
||||
TDocVen_Form(const char *, TRelation &);
|
||||
};
|
||||
|
||||
@ -68,12 +35,17 @@ public:
|
||||
|
||||
TDocVen_Form::TDocVen_Form(const char* name, TRelation &rel): TForm(name), _firmrel(rel) {}
|
||||
|
||||
void TDocVen_Form::extended_parse_general(TScanner &scanner) {
|
||||
if (scanner.popkey() == "MO") _module = scanner.string(); // se viene riconosciuto il token per l'impostazione del modulo legge il codice...
|
||||
else scanner.push(); // ...altrimenti rimette il token nella coda dello scanner
|
||||
}
|
||||
|
||||
bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||||
|
||||
if (code== "_ISAMREAD") {
|
||||
// lettura generica di un file del database
|
||||
// sintassi: _ISAMREAD <file> <espressione input>,<espressione input>,... <espressione output>,<espressione output>,...
|
||||
// sintassi: _ISAMREAD,<file>,<espressione input>[!<espressione input>!...],{<campo file>|<espressione output>[!<espressione output>!...]}
|
||||
// dove: <file> è il numero logico del file o il nome della tabella
|
||||
// <espressione input> è un'espressione del tipo <campo file>=<espressione campi form>
|
||||
// <espressione campi form> è un'espressione di costanti numeriche, stringhe e valori di campi della form (indicati con il loro numero preceduto da #)
|
||||
@ -85,7 +57,8 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
TString f_code(s.get()); // prende il codice del file da leggere
|
||||
if (atoi(f_code) != 0) file= new TLocalisamfile(atoi(f_code)); // se il codice è numerico allora è un file
|
||||
else file= new TTable(f_code); // altrimenti è una tabella
|
||||
TToken_string in(s.get(), ',');
|
||||
file->zero(); // vuota il record corrente del file
|
||||
TToken_string in(s.get(), '!');
|
||||
for (i=0; i<in.items(); i++) { // scansione sugli elementi dell'input
|
||||
TString curr(in.get(i));
|
||||
poseq= curr.find("=="); // divide la stringa corrente in lvalue e rvalue
|
||||
@ -93,8 +66,8 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
poseq= curr.find('=');
|
||||
if (poseq != -1) posrv= poseq+1;
|
||||
} else posrv= poseq+2;
|
||||
const TString &fld= curr.left(poseq); // preleva il nome del campo del file alla sinistra dell'uguale
|
||||
const TString &expr= curr.mid(posrv); // preleva l'espressione di assegnamento alla destra dell'uguale
|
||||
TString fld(curr.left(poseq)); // preleva il nome del campo del file alla sinistra dell'uguale
|
||||
TString expr(curr.mid(posrv)); // preleva l'espressione di assegnamento alla destra dell'uguale
|
||||
TExpression rval(expr, _strexpr);
|
||||
for (j=0; j<rval.numvar(); j++) { // scansione delle variabili dell'espressione di rvalue
|
||||
TString var= rval.varname(j);
|
||||
@ -105,7 +78,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
file->put(fld, (const char *)rval); // scrive il risultato dell'espressione nel campo del file
|
||||
}
|
||||
if (file->read()== NOERR) { // tenta una lettura del file
|
||||
TToken_string out(s.get(), ',');
|
||||
TToken_string out(s.get(), '!');
|
||||
for (i=0; i<out.items(); i++) { // scansione sugli elementi dell'output
|
||||
TString curr(out.get(i));
|
||||
poseq= curr.find("=="); // divide la stringa corrente in lvalue e rvalue
|
||||
@ -117,7 +90,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
const TString &dat= file->get(curr); // preleva il nome del campo del file e lo legge dal record
|
||||
cf.set(dat); // setta il campo letto dal file nel campo corrente della form
|
||||
} else {
|
||||
TString fld= curr.left(poseq); // preleva il nome del campo del form alla sinistra dell'uguale
|
||||
TString fld(curr.left(poseq)); // preleva il nome del campo del form alla sinistra dell'uguale
|
||||
const TString &dat= file->get(curr.mid(posrv)); // preleva il nome del campo del file alla destra dell'uguale e lo legge dal record
|
||||
if (fld[0]=='#') fld.ltrim(1);
|
||||
if (fld.right(1)== "@") { // se c'è la a-commerciale è un gruppo
|
||||
@ -148,11 +121,12 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
|
||||
if (code== "_TABLEREAD") {
|
||||
// lettura generica di un campo di una tabella
|
||||
// sintassi: _TABLEREAD <tabella> <chiave> <campo file>
|
||||
// sintassi: _TABLEREAD,<tabella>,<chiave>,<campo file>
|
||||
// dove: <tabella> nome tabella da leggere
|
||||
// <chiave> costante stringa o riferimento a campo della form (preceduto da '#') da usare come chiave di ricerca
|
||||
// <campo file> identificativo del campo da leggere dalla tabella
|
||||
TTable tab(s.get()); // prende il nome della tabella
|
||||
tab.zero(); // vuota il record corrente della tabella
|
||||
TString in(s.get()); // prende il valore o il campo da usare come codice di ricerca
|
||||
if (in.left(1)== '#') {
|
||||
in.ltrim(1);
|
||||
@ -169,25 +143,25 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
|
||||
if (code== "_DITTA") {
|
||||
// lettura dei dati della ditta
|
||||
// sintassi: _DITTA {<campo relazione>|<macro>}
|
||||
// sintassi: _DITTA,{<campo relazione>|<macro>}
|
||||
// dove: <campo relazione> è un riferimento alla relazione di gestione dei dati della ditta (es. 113@->DENCOM è la denominazione del comune di residenza della ditta)
|
||||
// <macro> è uno delle macro seguenti:
|
||||
// &RAGSOC ragione sociale
|
||||
// &IND indirizzo (fiscale se c'è, oppure di residenza)
|
||||
// &NUM numero civico (fiscale se c'è, oppure di residenza)
|
||||
// &CAP CAP (fiscale se c'è, oppure di residenza)
|
||||
// &COM comune (fiscale se c'è, oppure di residenza)
|
||||
// &IVA partita iva
|
||||
// &CF codice fiscale
|
||||
// &TEL numero di telefono (con prefisso)
|
||||
// &FAX numero di fax (con prefisso)
|
||||
// !RAGSOC ragione sociale
|
||||
// !IND indirizzo (fiscale se c'è, oppure di residenza)
|
||||
// !NUM numero civico (fiscale se c'è, oppure di residenza)
|
||||
// !CAP CAP (fiscale se c'è, oppure di residenza)
|
||||
// !COM comune (fiscale se c'è, oppure di residenza)
|
||||
// !IVA partita iva
|
||||
// !CF codice fiscale
|
||||
// !TEL numero di telefono (con prefisso)
|
||||
// !FAX numero di fax (con prefisso)
|
||||
// nota: la relazione di della ditta è così strutturata:
|
||||
// %NDITTE (9) Dati ditte
|
||||
// + %ANAGR (6) Anagrafica generale (indirizzo, ecc.)
|
||||
// + %COMUNI (113@) Comune di residenza
|
||||
// + %COMUNI (213@) Comune di residenza fiscale
|
||||
TString in(s.get());
|
||||
if (in[0]=='&') {
|
||||
if (in[0]=='!') {
|
||||
in.ltrim(1);
|
||||
bool _fisc= _firmrel.lfile(6).get("INDRF").not_empty();
|
||||
if (in=="RAGSOC") cf.set(_firmrel.lfile().get("RAGSOC"));
|
||||
@ -228,13 +202,13 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
|
||||
|
||||
if (code== "_CIFRELETTERE") {
|
||||
// conversione di un reale da cifre a lettere
|
||||
// sintassi: _CIFRELETTERE [<campo form>]
|
||||
// sintassi: _CIFRELETTERE[,<campo form>]
|
||||
// dove: <campo form> è il campo della form (preceduto da '#') da cui prendere il valore, se non è specificato è sottointeso il campo corrente
|
||||
// nota: prende il valore del campo specificato e scrive la sua conversione in lettere nel campo corrente
|
||||
TString in;
|
||||
if (s.items()==2) {
|
||||
in= s.get();
|
||||
if (in.left(1)== '#') in.ltrim(1);
|
||||
if (in[0]== '#') in.ltrim(1);
|
||||
TForm_item &fi= cf.find_field(in);
|
||||
in= fi.get();
|
||||
} else in= cf.get();
|
||||
@ -256,7 +230,7 @@ enum behaviour {
|
||||
skip,
|
||||
go,
|
||||
cancel
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -275,7 +249,7 @@ protected:
|
||||
int select(void);
|
||||
virtual void print(void);
|
||||
virtual void on_firm_change(void);
|
||||
virtual behaviour on_module_change(const TString &); // funzione chiamata ad ogni cambio modulo durante la stampa
|
||||
virtual behaviour on_module_change(const TString &, TString &); // funzione chiamata ad ogni cambio modulo durante la stampa
|
||||
virtual bool query_final_print(void); // funzione chiamata all'inizializzazione per sapere se la stampa è definitiva
|
||||
};
|
||||
|
||||
@ -293,6 +267,7 @@ bool TStampa_Doc_Vendita::create() {
|
||||
_provv= argv(4); // il terzo è il flag di numerazione provvisoria
|
||||
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
|
||||
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
|
||||
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
|
||||
_interattivo= FALSE;
|
||||
print();
|
||||
} else { // oppure lancio della maschera
|
||||
@ -318,8 +293,7 @@ int TStampa_Doc_Vendita::select() {
|
||||
if (m.run() == K_ENTER) {
|
||||
_codnum= m.get(F_CODNUM); // lettura dei dati dalla maschera
|
||||
_anno= m.get_int(F_ANNO);
|
||||
//_provv= (m.get_bool(F_PROVV))?("P"):("D");
|
||||
_provv = m.get(F_PROVV);
|
||||
_provv= m.get(F_PROVV);
|
||||
_dalnum= m.get_long(F_DA_NDOC);
|
||||
_alnum= m.get_long(F_A_NDOC);
|
||||
return 1;
|
||||
@ -333,91 +307,105 @@ bool TStampa_Doc_Vendita::menu(MENU_TAG) { // procedura di dispatch dei menu
|
||||
}
|
||||
|
||||
void TStampa_Doc_Vendita::print() {
|
||||
_definitiva= query_final_print(); // legge il flag di stampa definitiva
|
||||
printer().open(); // apre la stampante
|
||||
TFilename nomeform, profilo; // istanzia le stringhe per il nome del form di stampa e del profilo di configurazione
|
||||
TString modulo, modulo_prec; // istanzia le stringhe per l'inseguimento del modulo di carta
|
||||
//TToken_string stati("",','); // token string con gli stati validi dei documenti
|
||||
TTable tip("%TIP"); // istanzia la tabella dei tipi di documento per i profili
|
||||
TRelation rel(LF_DOC); // istanzia la relazione sul file principale
|
||||
TLocalisamfile &doc= rel.lfile(); // prende il riferimento al file principale
|
||||
TCursor cur(&rel); // crea il cursore principale dalla relazione
|
||||
doc.put("CODNUM", _codnum); // compone la chiave per il record di inizio cursore
|
||||
_definitiva= query_final_print(); // legge il flag di stampa definitiva
|
||||
printer().open(); // apre la stampante
|
||||
TFilename nomeform, profilo; // istanzia le stringhe per il nome del form di stampa e del profilo di configurazione
|
||||
TString modulo_prec; // istanzia la stringa per l'inseguimento del modulo di carta
|
||||
TTable tip("%TIP"); // istanzia la tabella dei tipi di documento per i profili
|
||||
TRelation rel(LF_DOC); // istanzia la relazione sul file principale
|
||||
TCursor cur(&rel); // crea il cursore principale dalla relazione
|
||||
TLocalisamfile &doc= cur.file(); // prende il riferimento al file principale
|
||||
doc.zero(); // vuota il record del file
|
||||
doc.put("CODNUM", _codnum); // compone la chiave per il record di inizio cursore
|
||||
doc.put("ANNO", _anno);
|
||||
doc.put("PROVV", _provv);
|
||||
doc.put("NDOC", _dalnum);
|
||||
doc.read(); // posiziona il file sul record
|
||||
TRectype darec= doc.curr(); // copia il record di inizio cursore
|
||||
doc.put("NDOC", _alnum); // compone la chiave per il record di fine cursore
|
||||
doc.read(); // posiziona il file sul record
|
||||
TRectype arec= doc.curr(); // copia il record di fine cursore
|
||||
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa
|
||||
for (int i= 0; i<cur.items(); i++)// ciclo sugli elementi del cursore di stampa
|
||||
{
|
||||
cur= i; // posiziona il cursore
|
||||
doc.read(); // posiziona il file sul record
|
||||
TRectype darec= doc.curr(); // copia il record di inizio cursore
|
||||
doc.zero(); // vuota il record del file
|
||||
doc.put("CODNUM", _codnum); // compone la chiave per il record di fine cursore
|
||||
doc.put("ANNO", _anno);
|
||||
doc.put("PROVV", _provv);
|
||||
doc.put("NDOC", _alnum);
|
||||
doc.read(); // posiziona il file sul record
|
||||
TRectype arec= doc.curr(); // copia il record di fine cursore
|
||||
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa (nell'ordine giusto :-)
|
||||
for (cur= 0; cur.pos()<cur.items(); ++cur) { // ciclo sugli elementi del cursore di stampa
|
||||
tip.put("CODTAB", doc.get("TIPODOC")); // posiziona la tabella dei tipi di documento
|
||||
int err=tip.read();
|
||||
if (err==NOERR) // legge la tabella
|
||||
{
|
||||
nomeform= tip.get("S5"); // legge il nome del form di stampa
|
||||
profilo= tip.get("S4"); // legge il nome del profilo di configurazione
|
||||
profilo.ext("ini");
|
||||
int err=tip.read(); // legge la tabella
|
||||
if (err==NOERR) { // se non ci sono errori procede con la stampa
|
||||
nomeform= tip.get("S5"); // legge il nome del form di stampa
|
||||
profilo= tip.get("S4"); // legge il nome del profilo di configurazione
|
||||
profilo.ext("ini"); // aggiunge l'estensione al nome del file del profilo
|
||||
TConfig config(profilo, "STAMPA"); // apre il file di configurazione del profilo
|
||||
TToken_string stati ((const char*)config.get("STATIVALIDI"), ','); // legge gli stati validi di questo tipo di documento
|
||||
if (_definitiva && (stati.get_pos(doc.get("STATO"))== -1)) // se lo stato del doc. corrente non è valido...
|
||||
{
|
||||
TToken_string stati((const char*)config.get("STATIVALIDI"), ','); // legge gli stati validi di questo tipo di documento
|
||||
if (_definitiva && (stati.get_pos(doc.get("STATO"))== -1)) { // se lo stato del doc. corrente non è valido...
|
||||
if (_interattivo) error_box("Non è possibile stampare un documento con stato non valido"); // ...viene mostrato un messaggio (solo in modo interattivo)...
|
||||
break; // ...e la stampa viene interrotta
|
||||
}
|
||||
behaviour whattodo= go; // istanzia la variabile di comportamento
|
||||
TDocVen_Form f(nomeform, *_firmrel); // istanzia il form
|
||||
// !! modulo= f.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
|
||||
if (modulo != modulo_prec) whattodo= on_module_change(modulo); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
|
||||
if (whattodo==cancel) // se non si può procedere la stampa viene interrotta
|
||||
break;
|
||||
else if (whattodo==go) // altrimenti prosegue
|
||||
{
|
||||
TCursor &fcur= *(f.cursor()); // ricava il riferimento al cursore originale del form
|
||||
darec= arec= doc.curr(); // prepara i record per il filtro
|
||||
fcur.setregion(darec, arec); // setta il filtro sul form (solo il record corrente)
|
||||
f.print(0,0); // stampa il record corrente del 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// error_box("Il documento corrente non può essere trovato nella tabella dei tipi di documento");
|
||||
error_box ("Errore %d leggendo da %TIP.", err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
printer().close(); // chiude la stampante
|
||||
}
|
||||
|
||||
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo) {
|
||||
// !! qui va messa la reazione al cambio di modulo
|
||||
// !! - se non si è in interattivo bisogna, immagino, ritornare sempre "skip"
|
||||
// !! - se si è in interattivo bisogna chiedere all'utente il da farsi, eventualmente
|
||||
// !! fornendo il nome esteso del modulo da inserire facendo una seek sulla tabella
|
||||
return skip;
|
||||
behaviour whattodo= go; // istanzia la variabile di comportamento
|
||||
TDocVen_Form f(nomeform, *_firmrel); // istanzia il form
|
||||
const TString &modulo= f.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
|
||||
if (modulo != modulo_prec) 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
|
||||
else if (whattodo==go) { // altrimenti prosegue
|
||||
TCursor &fcur= *(f.cursor()); // ricava il riferimento al cursore originale del form
|
||||
TLocalisamfile &rdoc= fcur.file(); // ricava il riferimento al file principale del cursore del form
|
||||
TRectype darec_r(rdoc.curr()); // istanzia il record di filtro per il cursore
|
||||
darec_r.zero(); // vuota il record
|
||||
darec_r.put("CODNUM", _codnum); // compone la chiave parziale per il filtro sul cursore dal file principale del cursore di selezione dei documenti
|
||||
darec_r.put("ANNO", _anno);
|
||||
darec_r.put("PROVV", _provv);
|
||||
darec_r.put("NDOC", doc.get("NDOC"));
|
||||
TRectype arec_r(darec_r); // istanzia il secondo record per il filtro sul cursore
|
||||
fcur.setregion(darec_r, arec_r); // setta il filtro sul cursore del form
|
||||
f.print(); // stampa il form corrente
|
||||
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;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
error_box("Il documento corrente non è stato trovato nella tabella dei tipi di documento (errore %d)", err);
|
||||
break;
|
||||
}
|
||||
}
|
||||
printer().close(); // chiude la stampante
|
||||
}
|
||||
|
||||
bool TStampa_Doc_Vendita::query_final_print() {
|
||||
if (_interattivo) { // se siamo in interattivo viene richiesto all'utente se la stampa è definitiva o meno
|
||||
if (yesno_box("E' una stampa definitiva?")) return TRUE;
|
||||
else return FALSE;
|
||||
} else return (strcmp(argv(7), "D")==0); // altrimenti lo legge dalla linea di comando
|
||||
}
|
||||
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo, TString &modulo_prec) {
|
||||
if (!_interattivo) return skip; // se siamo in interattivo il documento viene saltato...
|
||||
else { // ...altrimenti viene chiesto all'utente il da farsi
|
||||
int risp= yesnocancel_box("Il modulo di carta è cambiato: inserisci il modulo '%s' e premi 'Sì' per continuare, 'No' per saltare il documento o 'Cancel' per interrompere la stampa", modulo);
|
||||
behaviour ret;
|
||||
switch (risp) {
|
||||
case K_YES:
|
||||
modulo_prec= modulo; // aggiorna l'inseguitore dei moduli
|
||||
ret= go; // la stampa può continuare
|
||||
break;
|
||||
case K_NO:
|
||||
ret= skip; // il documento viene saltato
|
||||
break;
|
||||
case K_ESC:
|
||||
ret= cancel; // la stampa viene interrotta
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
bool TStampa_Doc_Vendita::query_final_print() {
|
||||
if (_interattivo) { // se siamo in interattivo viene richiesto all'utente se la stampa è definitiva o meno
|
||||
if (yesno_box("E' una stampa definitiva?")) return TRUE;
|
||||
else return FALSE;
|
||||
} else return _definitiva; // altrimenti ritorna il valore letto dalla linea di comando
|
||||
}
|
||||
|
||||
|
||||
|
||||
int ve1100(int argc, char* argv[]) {
|
||||
TStampa_Doc_Vendita a;
|
||||
a.run(argc, argv, "Stampa documenti di vendita");
|
||||
return (0);
|
||||
}
|
||||
int ve1100(int argc, char* argv[]) {
|
||||
TStampa_Doc_Vendita a;
|
||||
a.run(argc, argv, "Stampa documenti di vendita");
|
||||
return (0);
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ PAGE "STAMPA DOCUMENTI VENDITA" -1 -1 40 19
|
||||
STRING F_CODNUM 4 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "Codice Num. "
|
||||
FLAG "U"
|
||||
USE NUM
|
||||
INPUT CODTAB F_CODNUM
|
||||
DISPLAY "Cod. Num." CODTAB
|
||||
@ -19,9 +20,11 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_PROVV
|
||||
LIST F_PROVV 8
|
||||
BEGIN
|
||||
PROMPT 26 4 "Provvis."
|
||||
PROMPT 26 4 ""
|
||||
ITEM "P|Provvis."
|
||||
ITEM "D|Definit."
|
||||
END
|
||||
|
||||
RADIOBUTTON F_DATA_O_NUM 20
|
||||
@ -44,7 +47,7 @@ END
|
||||
NUMBER F_DA_NDOC 7 0
|
||||
BEGIN
|
||||
PROMPT 2 8 "Dal num. "
|
||||
USE 33 KEY 1
|
||||
USE 33 KEY 1 SELECT CODNUM==#F_CODNUM|ANNO==#F_ANNO
|
||||
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
|
||||
JOIN 13 TO 20 INTO COM=COMCF
|
||||
INPUT CODNUM F_CODNUM SELECT
|
||||
|
@ -58,7 +58,7 @@ bool TTabelle_sconti::user_create() {
|
||||
sci_k_id[2]= F_I_ZONE;
|
||||
sci_k_id[3]= F_I_CONDPAG;
|
||||
for (i=0; i<4; i++) {
|
||||
if (prassid.get_bool("ScoKey", "ve", i)) { // se nel file di config. il campo è abilitato...
|
||||
if (prassid.get_bool("SCOKEY", "ve", i)) { // se nel file di config. il campo è abilitato...
|
||||
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
|
||||
gotcha= TRUE; // ...e viene settato il flag di ok
|
||||
} else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
|
||||
|
@ -67,7 +67,7 @@ bool TCondizioni_vendita::user_create() {
|
||||
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
|
||||
switch (_condven[0]) {
|
||||
case 'L': { // listini
|
||||
if (!(prassid.get_bool("Ges", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
if (!(prassid.get_bool("GES", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// eliminazione campi di altri archivi
|
||||
DESTROY(F_C_COD);
|
||||
@ -77,17 +77,17 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_C_OBBLIG);
|
||||
set_search_field(F_L_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_codlis_catven= prassid.get_bool("CodLisCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
_codlis_catven= prassid.get_bool("CODLISCV"); // setta il booleano di abilitazione delle categoria di vendita
|
||||
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
_gest_um= prassid.get_bool("GesUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GesSca", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GesSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'C': // contratti
|
||||
if (!(prassid.get_bool("Ges", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
if (!(prassid.get_bool("GES", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
DESTROY(F_L_COD);
|
||||
@ -95,14 +95,14 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_L_CATVEN);
|
||||
DESTROY(F_LC_CODSUCC);
|
||||
set_search_field(F_C_COD); // impostazione del campo di ricerca
|
||||
_gest_um= prassid.get_bool("GesUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GesSca", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GesSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
case 'O': // offerte
|
||||
if (!(prassid.get_bool("Ges", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
if (!(prassid.get_bool("GES", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
|
||||
else {
|
||||
// settaggio dei campi da eliminare
|
||||
DESTROY(F_L_COD);
|
||||
@ -113,9 +113,9 @@ bool TCondizioni_vendita::user_create() {
|
||||
DESTROY(F_C_OBBLIG);
|
||||
set_search_field(F_O_COD); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
|
||||
_gest_um= prassid.get_bool("GesUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GesSca", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GesSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
|
||||
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
|
||||
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
|
||||
gotcha= TRUE;
|
||||
}
|
||||
break;
|
||||
@ -132,7 +132,7 @@ bool TCondizioni_vendita::user_create() {
|
||||
if (!_gest_um) _msk->disable(F_GESTUM); // disabilita condizionalmente il booleano di gestione delle unità di misura
|
||||
if (!_gest_sca) _msk->disable(F_GESTSCAGL); // disabilita condizionalmente il booleano di gestione degli scaglioni
|
||||
if (!_gest_so) _msk->disable(F_GESTSCO); // disabilita condizionalmente il booleano di gestione degli sconti/omaggi
|
||||
_gest_val= prassid.get_bool("GesVal"); // legge il booleano di abilitazione delle gastione delle valute
|
||||
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione delle gastione delle valute
|
||||
if (!_gest_val) { // se la gestione delle valute è disabilitata i campi di gestione vengono disabilitati
|
||||
_msk->disable(F_CODVAL);
|
||||
_msk->disable(F_CAMBIO);
|
||||
|
@ -89,7 +89,7 @@ bool TRighe_condizioni_vendita::user_create() {
|
||||
_msk->hide(F_R_O_RICERCA);
|
||||
_msk->hide(F_R_CO_CODLOTTO);
|
||||
_msk->hide(F_R_O_ARTES);
|
||||
_codlis_catven= prassid.get_bool("CodLisCV"); // setta il booleano di abilitazione di CATVEN
|
||||
_codlis_catven= prassid.get_bool("COSLISCV"); // setta il booleano di abilitazione di CATVEN
|
||||
if (!_codlis_catven) KILL(F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
|
||||
set_search_field(F_R_L_RICERCA); // impostazione del campo di ricerca
|
||||
_msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
|
||||
|
18
ve/veacc.frm
18
ve/veacc.frm
@ -1,4 +1,3 @@
|
||||
<<<<<<< veacc.frm
|
||||
|
||||
// Completare la sezione "iva" nel body
|
||||
// Manca il campo "causale" nella section footer
|
||||
@ -6,8 +5,6 @@
|
||||
|
||||
// Una volta completato, togliere dalla relazione i files che non servono.
|
||||
|
||||
=======
|
||||
>>>>>>> 1.2
|
||||
USE 33
|
||||
JOIN 34 ALIAS 101 INTO CODNUM=CODNUM ANNO=ANNO PROVV=PROVV NDOC=NDOC
|
||||
JOIN 17 ALIAS 201 INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
@ -129,11 +126,7 @@ BEGIN
|
||||
PROMPT 15 6 ""
|
||||
END
|
||||
|
||||
<<<<<<< veacc.frm
|
||||
STRINGA 9
|
||||
=======
|
||||
NUMERO 11
|
||||
>>>>>>> 1.2
|
||||
BEGIN
|
||||
KEY "reg.soc.trib...."
|
||||
PROMPT 5 6 "REG.SOC.TRIB.R.E. 8897"
|
||||
@ -208,13 +201,8 @@ BEGIN
|
||||
FIELD 1102@->CAPCOM
|
||||
END
|
||||
|
||||
<<<<<<< veacc.frm
|
||||
STRINGA 85 50 1
|
||||
=======
|
||||
STRINGA 83 30 1
|
||||
>>>>>>> 1.2
|
||||
BEGIN
|
||||
<<<<<<< veacc.frm
|
||||
FLAGS "H"
|
||||
PROMPT 1 1 ""
|
||||
FIELD 16->COM
|
||||
@ -222,8 +210,6 @@ END
|
||||
|
||||
STRINGA 86 30 1
|
||||
BEGIN
|
||||
=======
|
||||
>>>>>>> 1.2
|
||||
KEY "destinazione, comune"
|
||||
PROMPT 1 14 ""
|
||||
FIELD 1102@->DENCOM
|
||||
@ -240,12 +226,8 @@ DATA 23 8 1
|
||||
BEGIN
|
||||
KEY "data conferma"
|
||||
PROMPT 28 19 ""
|
||||
<<<<<<< veacc.frm
|
||||
FIELD DATADOCRIF
|
||||
FORMAT "1444-"
|
||||
=======
|
||||
FIELD 33->DATADOCRIF
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
STRINGA 24 48 1
|
||||
|
259
ve/vebol.frm
259
ve/vebol.frm
@ -1,40 +1,34 @@
|
||||
|
||||
// - Manca la gestione del campo "causale"
|
||||
// - Il cliente deve essere gestito con il nuovo messaggio _CLIENTE, per ora è gestito con
|
||||
// l'aggancio alla relazione
|
||||
// - Controllare la posizione dei campi precendentemente compositi (indirizzi, comuni, ecc.)
|
||||
|
||||
USE 33
|
||||
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
|
||||
JOIN 17 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 16 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
|
||||
USE 34
|
||||
JOIN 33 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
|
||||
JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
|
||||
JOIN 16 TO 17 ALIAS 116 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
|
||||
JOIN 47 TO 34 INTO CODART==CODART
|
||||
JOIN 52 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN %CPG INTO CODTAB==CODPAG
|
||||
JOIN %AGE INTO CODTAB==CODAG
|
||||
JOIN %POR INTO CODTAB==CODPORTO
|
||||
JOIN %BAN INTO CODTAB==CODABIA+CODCABA
|
||||
JOIN %VET INTO CODTAB==CODVETT1
|
||||
JOIN %ASP INTO CODTAB==ASPBENI1
|
||||
JOIN 47 INTO CODART==CODART
|
||||
JOIN %CPG TO 33 ALIAS 201 INTO CODTAB==CODPAG
|
||||
JOIN %AGE TO 33 ALIAS 202 INTO CODTAB==CODAG
|
||||
JOIN %POR TO 33 ALIAS 203 INTO CODTAB==CODPORTO
|
||||
JOIN %BAN TO 33 ALIAS 204 INTO CODTAB==CODABIA+CODCABA
|
||||
JOIN %VET TO 33 ALIAS 205 INTO CODTAB==CODVETT1
|
||||
JOIN %ASP TO 33 ALIAS 206 INTO CODTAB==ASPBENI1
|
||||
|
||||
END
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
33->* "Documenti di vendita"
|
||||
34->* "Righe documenti di vendita"
|
||||
33->* "Documenti di vendita"
|
||||
17->* "Clienti/Fornitori per vendite"
|
||||
20->* "Clienti/Fornitori"
|
||||
47 ->* "Righe listini"
|
||||
52 ->* "Contratti clienti"
|
||||
16 ->* "Indirizzi di spedizione"
|
||||
116->* "Indirizzi di spedizione"
|
||||
%CPG->* "Condizioni di pagamento"
|
||||
%AGE ->* "Agenti"
|
||||
%MSP ->* "Modalità di spedizioni"
|
||||
%POR ->* "Modalità di consegna"
|
||||
%BAN ->* "Banche"
|
||||
16->* "Indirizzi di spedizione (destinazione)"
|
||||
116@->* "Indirizzi di spedizione (destinatario)"
|
||||
47->* "Anagrafica magazzino"
|
||||
201@->* "Tabella condizioni di pagamento"
|
||||
202@->* "Tabella agenti"
|
||||
203@->* "Tabella porto"
|
||||
204@->* "Tabella banche"
|
||||
205@->* "Tabella vettori"
|
||||
206@->* "Tabella apsetto beni"
|
||||
END
|
||||
|
||||
GENERAL
|
||||
@ -42,349 +36,360 @@ BEGIN
|
||||
OFFSET 0 0
|
||||
FONT "Courier New"
|
||||
SIZE 12
|
||||
MODULE BUFFETTI_BOLLA_01
|
||||
END
|
||||
|
||||
SECTION HEADER ODD 33
|
||||
|
||||
STRINGA 1 36 1
|
||||
STRING 1 36 1
|
||||
BEGIN
|
||||
KEY "nome ditta"
|
||||
PROMPT 5 6 ""
|
||||
MESSAGE _DITTA &RAGSOC
|
||||
MESSAGE _DITTA,!RAGSOC
|
||||
END
|
||||
|
||||
STRINGA 2 36 1
|
||||
STRING 2 36 1
|
||||
BEGIN
|
||||
KEY "indirizzo ditta"
|
||||
PROMPT 5 7 ""
|
||||
MESSAGE _DITTA &IND
|
||||
MESSAGE _DITTA,!IND
|
||||
END
|
||||
|
||||
STRINGA 3 5 1
|
||||
STRING 3 5 1
|
||||
BEGIN
|
||||
KEY "cap ditta"
|
||||
PROMPT 5 8 ""
|
||||
MESSAGE _DITTA &CAP
|
||||
MESSAGE _DITTA,!CAP
|
||||
END
|
||||
|
||||
STRINGA 4 30 1
|
||||
STRING 4 30 1
|
||||
BEGIN
|
||||
KEY "comune ditta"
|
||||
PROMPT 12 8 ""
|
||||
MESSAGE _DITTA &COM
|
||||
MESSAGE _DITTA,!COM
|
||||
END
|
||||
|
||||
STRINGA 5 5 1
|
||||
STRING 5 5 1
|
||||
BEGIN
|
||||
KEY "scritta P.IVA"
|
||||
PROMPT 5 9 "P.IVA"
|
||||
END
|
||||
|
||||
STRINGA 6 16 1
|
||||
STRING 6 16 1
|
||||
BEGIN
|
||||
KEY "partita iva ditta"
|
||||
PROMPT 11 9 ""
|
||||
MESSAGE _DITTA &IVA
|
||||
MESSAGE _DITTA,!IVA
|
||||
END
|
||||
|
||||
STRINGA 7 9 1
|
||||
STRING 7 9 1
|
||||
BEGIN
|
||||
KEY "scritta COD.FISC."
|
||||
PROMPT 5 10 "COD.FISC."
|
||||
END
|
||||
|
||||
STRINGA 8 16 1
|
||||
STRING 8 16 1
|
||||
BEGIN
|
||||
KEY "codice fiscale ditta"
|
||||
PROMPT 15 10 ""
|
||||
MESSAGE _DITTA &CF
|
||||
MESSAGE _DITTA,!CF
|
||||
END
|
||||
|
||||
STRINGA 14 35 2
|
||||
STRING 14 35 2
|
||||
BEGIN
|
||||
KEY "destinatario, ditta"
|
||||
PROMPT 44 16 ""
|
||||
FIELD 20->RAGSOC
|
||||
END
|
||||
|
||||
STRINGA 15 35 2
|
||||
STRING 15 35 2
|
||||
BEGIN
|
||||
KEY "destinatario, indirizzo"
|
||||
PROMPT 44 18 ""
|
||||
FIELD 20->INDCF
|
||||
END
|
||||
|
||||
STRINGA 48 5 1
|
||||
STRING 48 5 1
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
KEY ""
|
||||
PROMPT 1 1 ""
|
||||
FLAGS "H"
|
||||
FIELD 116@->COM
|
||||
END
|
||||
|
||||
STRINGA 16 5 1
|
||||
STRING 16 5 1
|
||||
BEGIN
|
||||
KEY "destinatario, cap"
|
||||
PROMPT 44 20 ""
|
||||
MESSAGE _ISAMREAD 13 COM==#48 CAPCOM
|
||||
MESSAGE _ISAMREAD,13,COM==#48,CAPCOM
|
||||
END
|
||||
|
||||
STRINGA 17 30 2
|
||||
STRING 17 30 2
|
||||
BEGIN
|
||||
KEY "destinatario, comune"
|
||||
PROMPT 50 20 ""
|
||||
MESSAGE _ISAMREAD 13 COM==#48 DENCOM
|
||||
MESSAGE _ISAMREAD,13,COM==#48,DENCOM
|
||||
END
|
||||
|
||||
STRINGA 18 2 1
|
||||
STRING 18 2 1
|
||||
BEGIN
|
||||
KEY "destinatario, procincia"
|
||||
PROMPT 72 21 ""
|
||||
MESSAGE _ISAMREAD 13 COM=#48 PROVCOM
|
||||
MESSAGE _ISAMREAD,13,COM=#48,PROVCOM
|
||||
END
|
||||
|
||||
DATA 19 8 1
|
||||
DATE 19 8 1
|
||||
BEGIN
|
||||
KEY "data bolla"
|
||||
PROMPT 60 25 ""
|
||||
FIELD DATADOC
|
||||
FIELD 33->DATADOC
|
||||
FORMAT "1442-"
|
||||
END
|
||||
|
||||
NUMERO 20
|
||||
NUMBER 20
|
||||
BEGIN
|
||||
KEY "numero bolla"
|
||||
PROMPT 71 25 ""
|
||||
FIELD NDOC
|
||||
FIELD 33->NDOC
|
||||
END
|
||||
|
||||
STRINGA 21 30 2
|
||||
STRING 21 30 2
|
||||
BEGIN
|
||||
KEY "destinazione, indirizzo"
|
||||
PROMPT 5 16 ""
|
||||
FIELD 16->INDIR
|
||||
END
|
||||
|
||||
STRINGA 32 5 1
|
||||
STRING 32 5 1
|
||||
BEGIN
|
||||
KEY "destinazione, cap"
|
||||
PROMPT 5 18 ""
|
||||
FIELD 16->CAP
|
||||
END
|
||||
|
||||
STRINGA 49 5 1
|
||||
STRING 49 5 1
|
||||
BEGIN
|
||||
FLAGS "H"
|
||||
KEY ""
|
||||
PROMPT 1 1 ""
|
||||
FLAGS "H"
|
||||
FIELD 16->COM
|
||||
END
|
||||
|
||||
STRINGA 33 21 1
|
||||
STRING 33 21 1
|
||||
BEGIN
|
||||
KEY "destinazione, comune"
|
||||
PROMPT 5 20 ""
|
||||
MESSAGE _ISAMREAD 13 COM=#49 DENCOM
|
||||
MESSAGE _ISAMREAD,13,COM=#49,DENCOM
|
||||
END
|
||||
|
||||
STRINGA 34 2
|
||||
STRING 34 2
|
||||
BEGIN
|
||||
KEY "destinazione, provincia"
|
||||
PROMPT 28 20 ""
|
||||
MESSAGE _ISAMREAD 13 COM=#49 PROVCOM
|
||||
MESSAGE _ISAMREAD,13,COM=#49,PROVCOM
|
||||
END
|
||||
|
||||
NUMERO 22
|
||||
NUMBER 22
|
||||
BEGIN
|
||||
KEY "ordine"
|
||||
PROMPT 3 25 ""
|
||||
FIELD NUMDOCRIF
|
||||
FIELD 33->NUMDOCRIF
|
||||
END
|
||||
|
||||
DATA 23 8 1
|
||||
DATE 23 8 1
|
||||
BEGIN
|
||||
KEY "data conferma"
|
||||
PROMPT 16 25 ""
|
||||
FIELD DATADOCRIF
|
||||
FIELD 33->DATADOCRIF
|
||||
FORMAT "1442-"
|
||||
END
|
||||
|
||||
STRINGA 24 48 1
|
||||
STRING 24 48 1
|
||||
BEGIN
|
||||
KEY "condizioni pagamento"
|
||||
PROMPT 3 27 ""
|
||||
FIELD %CPG->S0
|
||||
FIELD 201@->S0
|
||||
END
|
||||
|
||||
STRINGA 25 29 1
|
||||
STRING 25 29 1
|
||||
BEGIN
|
||||
KEY "banca appoggio"
|
||||
PROMPT 53 27 ""
|
||||
FIELD %BAN->S0
|
||||
FIELD 204@->S0
|
||||
END
|
||||
|
||||
STRINGA 26 7 1
|
||||
STRING 26 7 1
|
||||
BEGIN
|
||||
KEY "codice cliente"
|
||||
PROMPT 3 29 ""
|
||||
FIELD CODCF
|
||||
FIELD 33->CODCF
|
||||
END
|
||||
|
||||
STRINGA 27 11 1
|
||||
STRING 27 11 1
|
||||
BEGIN
|
||||
KEY "partita iva cliente"
|
||||
PROMPT 12 29 ""
|
||||
FIELD 20->PAIV
|
||||
END
|
||||
|
||||
STRINGA 28 18 1
|
||||
STRING 28 18 1
|
||||
BEGIN
|
||||
KEY "porto"
|
||||
PROMPT 41 25 ""
|
||||
FIELD %POR->S0
|
||||
FIELD 203@->S0
|
||||
END
|
||||
|
||||
NUMERO 29
|
||||
NUMBER 29
|
||||
BEGIN
|
||||
KEY "codice agente"
|
||||
PROMPT 29 29 ""
|
||||
FIELD CODAG
|
||||
FIELD 33->CODAG
|
||||
END
|
||||
|
||||
STRINGA 30 28 1
|
||||
STRING 30 28 1
|
||||
BEGIN
|
||||
KEY "nome agente"
|
||||
PROMPT 33 29 ""
|
||||
FIELD %AGE->S0
|
||||
FIELD 202@->S0
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION BODY ODD 24
|
||||
SECTION BODY ODD 1
|
||||
|
||||
STRINGA 32 13 1
|
||||
STRING 32 13 1
|
||||
BEGIN
|
||||
KEY "codice articolo"
|
||||
PROMPT 5 34 ""
|
||||
PROMPT 5 1 ""
|
||||
FIELD 34->CODART
|
||||
END
|
||||
|
||||
STRINGA 33 30 1
|
||||
STRING 33 30 1
|
||||
BEGIN
|
||||
KEY "descrizione articolo"
|
||||
PROMPT 25 34 ""
|
||||
PROMPT 25 1 ""
|
||||
FIELD 47->DESCR
|
||||
END
|
||||
|
||||
STRINGA 34 2 1
|
||||
STRING 34 2 1
|
||||
BEGIN
|
||||
KEY "unità di misura"
|
||||
PROMPT 56 34 ""
|
||||
PROMPT 56 1 ""
|
||||
FIELD 34->UMQTA
|
||||
END
|
||||
|
||||
STRINGA 35 10 1
|
||||
NUMBER 35 6 3
|
||||
BEGIN
|
||||
KEY "quantità"
|
||||
PROMPT 60 34 ""
|
||||
PROMPT 60 1 ""
|
||||
PICTURE "@@@@@@,###"
|
||||
FIELD 34->QTA
|
||||
END
|
||||
|
||||
STRINGA 36 10 1
|
||||
STRING 36 10 1
|
||||
BEGIN
|
||||
KEY "quantità lettere"
|
||||
PROMPT 72 34 ""
|
||||
FIELD 34->QTA
|
||||
MESSAGE _CIFRELETTERE
|
||||
PROMPT 72 1 ""
|
||||
MESSAGE _CIFRELETTERE,#35
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION FOOTER ODD 9
|
||||
|
||||
STRINGA 47 5 1
|
||||
STRING 47 5 1
|
||||
BEGIN
|
||||
KEY "scritta SEGUE"
|
||||
PROMPT 72 70 "SEGUE"
|
||||
PROMPT 72 9 "SEGUE"
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
SECTION FOOTER LAST 9
|
||||
|
||||
LISTA 37 1 1
|
||||
LIST 37 1 1
|
||||
BEGIN
|
||||
KEY "trasporto a cura del mittente"
|
||||
PROMPT 4 59 ""
|
||||
PROMPT 4 1 ""
|
||||
FIELD 33->CODSPMEZZO
|
||||
ITEM "|"
|
||||
ITEM "D|"
|
||||
ITEM "V|"
|
||||
ITEM "M|x"
|
||||
FIELD CODSPMEZZO
|
||||
END
|
||||
|
||||
LISTA 38 1 1
|
||||
LIST 38 1 1
|
||||
BEGIN
|
||||
KEY "trasporto a cura del destinatario"
|
||||
PROMPT 13 59 ""
|
||||
PROMPT 13 1 ""
|
||||
FIELD 33->CODSPMEZZO
|
||||
ITEM "|"
|
||||
ITEM "D|x"
|
||||
FIELD CODSPMEZZO
|
||||
ITEM "V|"
|
||||
ITEM "M|"
|
||||
END
|
||||
|
||||
LISTA 39 1 1
|
||||
LIST 39 1 1
|
||||
BEGIN
|
||||
KEY "trasporto a cura del vettore"
|
||||
PROMPT 23 59 ""
|
||||
PROMPT 23 1 ""
|
||||
FIELD 33->CODSPMEZZO
|
||||
ITEM "|"
|
||||
ITEM "D|"
|
||||
ITEM "V|x"
|
||||
FIELD CODSPMEZZO
|
||||
ITEM "M|"
|
||||
END
|
||||
|
||||
STRINGA 40 45 1
|
||||
STRING 40 45 1
|
||||
BEGIN
|
||||
KEY "nome vettore"
|
||||
PROMPT 3 62 ""
|
||||
FIELD %VET->S0
|
||||
PROMPT 3 4 ""
|
||||
FIELD 205@->S0
|
||||
END
|
||||
|
||||
STRINGA 41 45 1
|
||||
STRING 41 45 1
|
||||
BEGIN
|
||||
KEY "indirizzo vettore"
|
||||
PROMPT 3 64 ""
|
||||
FIELD %VET->S1
|
||||
PROMPT 3 6 ""
|
||||
FIELD 205@->S1
|
||||
END
|
||||
|
||||
DATA 42 8 1
|
||||
DATE 42 8 1
|
||||
BEGIN
|
||||
KEY "data inizio trasporto"
|
||||
PROMPT 51 61 ""
|
||||
FIELD DATAPART
|
||||
PROMPT 51 3 ""
|
||||
FIELD 33->DATAPART
|
||||
FORMAT "1442-"
|
||||
END
|
||||
|
||||
STRINGA 43 5 1
|
||||
STRING 43 5 1
|
||||
BEGIN
|
||||
KEY "ora inizio trasporto"
|
||||
PROMPT 60 61 ""
|
||||
FIELD ORAPART
|
||||
PROMPT 60 3 ""
|
||||
FIELD 33->ORAPART
|
||||
END
|
||||
|
||||
STRINGA 44 27 1
|
||||
STRING 44 27 1
|
||||
BEGIN
|
||||
KEY "aspetto beni"
|
||||
PROMPT 37 59 ""
|
||||
FIELD %ASP->S0
|
||||
PROMPT 37 1 ""
|
||||
FIELD 206@->S0
|
||||
END
|
||||
|
||||
STRINGA 45 7 1
|
||||
STRING 45 7 1
|
||||
BEGIN
|
||||
KEY "peso"
|
||||
PROMPT 73 59 ""
|
||||
FIELD PNETTO
|
||||
PROMPT 73 1 ""
|
||||
FIELD 33->PNETTO
|
||||
END
|
||||
|
||||
STRINGA 46 5 1
|
||||
STRING 46 5 1
|
||||
BEGIN
|
||||
KEY "colli"
|
||||
PROMPT 66 59 ""
|
||||
FIELD NCOLLI
|
||||
PROMPT 66 1 ""
|
||||
FIELD 33->NCOLLI
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
END
|
||||
|
||||
|
73
ve/vefat.frm
73
ve/vefat.frm
@ -1,4 +1,3 @@
|
||||
<<<<<<< vefat.frm
|
||||
|
||||
// - I FIELD sul file 20 (clifo) vanno sostituiti con messaggi _CLIENTE.
|
||||
// - "Cliente provincia" e' gestito dalla relazione. Dovra' essere gestito da un messaggio _CLIENTE
|
||||
@ -19,10 +18,7 @@
|
||||
//
|
||||
// Togliere dalla relazione i files che non servono, quando tutti i campi sono OK.
|
||||
|
||||
=======
|
||||
>>>>>>> 1.2
|
||||
USE 33
|
||||
<<<<<<< vefat.frm
|
||||
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
|
||||
JOIN 17 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
|
||||
@ -37,34 +33,11 @@ JOIN %POR INTO CODTAB==CODPORTO
|
||||
JOIN %BAN INTO CODTAB==CODABIA+CODCABA
|
||||
JOIN %VET INTO CODTAB==CODVETT1
|
||||
JOIN %ASP INTO CODTAB==ASPBENI1
|
||||
=======
|
||||
JOIN 34 ALIAS 101 INTO CODNUM=CODNUM ANNO=ANNO PROVV=PROVV NDOC=NDOC
|
||||
JOIN 17 ALIAS 201 INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
JOIN 20 ALIAS 202 INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
JOIN %CPG ALIAS 301 INTO CODTAB=CODPAG
|
||||
JOIN %VAL ALIAS 302 INTO CODTAB=CODVAL
|
||||
JOIN %LNG ALIAS 303 INTO CODTAB=CODLIN
|
||||
JOIN AGE ALIAS 304 INTO CODTAB=CODAG
|
||||
JOIN MSP ALIAS 305 INTO CODTAB=CODSPMEZZO
|
||||
JOIN POR ALIAS 306 INTO CODTAB=CODPORTO
|
||||
JOIN 47 TO 101@ ALIAS 401 INTO CODART=CODART
|
||||
JOIN 52 ALIAS 601 INTO TIPOCF=TIPOCF CODCF=CODCF
|
||||
JOIN 16 ALIAS 701 INTO TIPOCF=TIPOCF CODCF=CODCF CODIND=CODINDSP
|
||||
JOIN 16 TO 201@ ALIAS 801 INTO TIPOCF=TIPOCF CODCF=CODCF CODIND=CODINDSP
|
||||
JOIN %BAN ALIAS 901 INTO CODTAB=CODABIA+CODCABA
|
||||
JOIN %BAN ALIAS 902 INTO CODTAB=CODABIP+CODCABP
|
||||
JOIN NDO ALIAS 1001 INTO CODTAB=CODNOTESP1
|
||||
JOIN NDO ALIAS 1002 INTO CODTAB=CODNOTESP2
|
||||
JOIN 13 TO 304@ ALIAS 1101 INTO COM=COMCF
|
||||
JOIN 13 TO 304@ ALIAS 1102 INTO COM=COM
|
||||
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
DESCRIPTION
|
||||
BEGIN
|
||||
33->* "Documenti di vendita"
|
||||
<<<<<<< vefat.frm
|
||||
34->* "Righe documenti di vendita"
|
||||
17->* "Clienti/Fornitori per vendite"
|
||||
20->* "Clienti/Fornitori"
|
||||
@ -78,27 +51,6 @@ BEGIN
|
||||
%MSP ->* "Modalità di spedizioni"
|
||||
%POR ->* "Modalità di consegna"
|
||||
%BAN ->* "Banche"
|
||||
=======
|
||||
101@->* "Righe documenti di vendita"
|
||||
201@->* "Clienti/Fornitori per vendite"
|
||||
202@->* "Clienti/Fornitori"
|
||||
301@->* "CPG"
|
||||
302@->* "VAL"
|
||||
303@->* "LNG"
|
||||
304@->* "AGE"
|
||||
305@->* "MSP"
|
||||
306@->* "POR"
|
||||
401@->* "Righe listini"
|
||||
601@->* "Contratti clienti"
|
||||
701@->* "Indirizzi di spedizione"
|
||||
801@->* "Indirizzi di spedizione"
|
||||
901@->* "Tabella banche"
|
||||
902@->* "Tabella banche"
|
||||
1001@->* "Tabella Note Documento"
|
||||
1002@->* "Tabella Note Documento"
|
||||
1101@->* "Comuni"
|
||||
1102@->* "Comuni"
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
GENERAL
|
||||
@ -223,23 +175,15 @@ DATA 20 8 1
|
||||
BEGIN
|
||||
KEY "data conferma"
|
||||
PROMPT 20 23 ""
|
||||
<<<<<<< vefat.frm
|
||||
FIELD DATADOCRIF
|
||||
FORMAT "1444-"
|
||||
=======
|
||||
FIELD 33->DATADOCRIF
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
STRINGA 21 49 1
|
||||
BEGIN
|
||||
KEY "condizioni di pagamento"
|
||||
PROMPT 3 25 ""
|
||||
<<<<<<< vefat.frm
|
||||
FIELD %CPG->S0
|
||||
=======
|
||||
FIELD 901@->S0
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
STRINGA 22 29 1
|
||||
@ -285,26 +229,12 @@ BEGIN
|
||||
PROMPT 50 15 ""
|
||||
END
|
||||
|
||||
<<<<<<< vefat.frm
|
||||
STRINGA 30 2 1
|
||||
BEGIN
|
||||
KEY "cliente provincia"
|
||||
PROMPT 73 16 ""
|
||||
FIELD 13->PROVCOM
|
||||
END
|
||||
=======
|
||||
STRINGA 29 20 1
|
||||
BEGIN
|
||||
KEY "cliente localita 2"
|
||||
PROMPT 50 16 ""
|
||||
END
|
||||
|
||||
STRINGA 30 2 1
|
||||
BEGIN
|
||||
KEY "cliente provincia"
|
||||
PROMPT 73 16 ""
|
||||
END
|
||||
>>>>>>> 1.2
|
||||
|
||||
STRINGA 31 2 1
|
||||
BEGIN
|
||||
@ -587,10 +517,7 @@ STRINGA 75 12 1
|
||||
BEGIN
|
||||
KEY "netto da pagare"
|
||||
PROMPT 71 66 ""
|
||||
<<<<<<< vefat.frm
|
||||
MESSAGE _COD_TESTA NETPAG
|
||||
=======
|
||||
>>>>>>> 1.2
|
||||
END
|
||||
|
||||
END
|
||||
|
Loading…
x
Reference in New Issue
Block a user