Patch level : 10.0 patch 380

Files correlati     : lv2, lv2400a.msk, lvmenu
Ricompilazione Demo : [ ]
Commento            :
Corretta la generazione automatica dei documenti in base algi accordi previsti nell'ultima riunione [prima versione; ulteriori test sono in corso]


git-svn-id: svn://10.65.10.50/trunk@19126 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-07-22 14:57:08 +00:00
parent 3587bb603a
commit 0c6f9681fe
4 changed files with 167 additions and 112 deletions

View File

@ -39,6 +39,7 @@ class TGenera_documenti_app : public TSkeleton_application
TAssoc_array _quantita;
TAssoc_array _quantita_ritirata;
TConfig* _configlv;
char _buono;
private:
//Metodi per la generazione dei documenti
@ -49,11 +50,11 @@ private:
bool numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
bool numerazione_dant(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
//Metodi per l'eliminazione dei documenti
void cambia_stato(const long codcli, const long codind, const char ritoant);
void elimina_bolle(const long codcli, const long codind);
void cambia_stato(const char ritoant, const TString_array& docarr);
void elimina_bolle(const long codcli, const long codind, TString_array& docarr);
//Metodi per la scansione dei documenti
void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant);
void scansione_consegne(const long codcli, const long codind);
void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant, const TDocumento& docgen);
void scansione_consegne(const long codcli, const long codind, const TDocumento& docgen);
//Metodo per il calcolo delle quantità in bolla
void calcolo_quantita(const TDocumento& doc, const char ritoant);
//Metodi aggiornare il conguaglio sui contratti
@ -78,6 +79,7 @@ bool TGenera_documenti_app::create()
{
_msk = new TGenera_documenti_mask("lv2400a");
_configlv = new TConfig(CONFIG_DITTA,"lv");
_buono = *TApplication::argv(2);
return TSkeleton_application::create();
}
@ -130,15 +132,11 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
//elimina eventuali documenti di consegna che sono ancora in stato iniziale
//...e riporta in stato iniziale i documenti di ritiro e di anticipo che concorrono
//...a calcolare le quantità da riportare sulla bolla
cambia_stato(codcli, codind, 'R');
cambia_stato(codcli, codind, 'A');
elimina_bolle(codcli, codind);
//calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna
//...eventualmente modificate a mano
scansione_ritiri_anticipi(codcli,codind,'R');
scansione_ritiri_anticipi(codcli,codind,'A');
scansione_consegne(codcli,codind);
TString_array docarr; //array che conterrà i riferimenti ai documenti da cancellare
elimina_bolle(codcli, codind, docarr);
cambia_stato('R', docarr);
cambia_stato('A', docarr);
//variabili che conterranno i parametri dei documenti che devo generare...
//...settati dalla funzione numerazione_ddt()
@ -153,7 +151,18 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
//creo il documento corretto riempiendo i campi che già conosco
TDocumento doc('D',anno,codnum,0);
doc.put(DOC_TIPODOC, tpdoc);
//calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna
//...eventualmente modificate a mano
scansione_ritiri_anticipi(codcli,codind,'R', doc);
scansione_ritiri_anticipi(codcli,codind,'A', doc);
scansione_consegne(codcli, codind, doc);
//se non trovo quale documento generare, evito il resto dell'elaborazione
if (!numerazione_ddt(codnum, tpdoc, statoi, statof))
return NOERR;
doc.put(DOC_STATO, statoi);
doc.put(DOC_TIPODOC, tpdoc);
doc.put(DOC_DATADOC, datadoc);
@ -179,7 +188,9 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
crea_riga(rcont, modpas, true, doc);*/
}
int err = doc.write();
int err = 1;
if (doc.rows() > 0)
err = doc.write();
//scrivo sul planning il riferimento alla bolla che lo accompagna
if (err == NOERR)
@ -195,12 +206,20 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
}
//CREA_RIGA: questa funzione crea una riga merce per una bolla di consegna
void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo,TDocumento& doc)
void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc)
{
const int perarr = _configlv->get_int("Perarr");
//creo la nuova riga
TRiga_documento& rdoc = doc.new_row("21");
TString4 tiporiga;
switch (_buono)
{
case 'P': tiporiga = "21"; break;
case 'C': tiporiga = "21"; break;
default: break;
}
TRiga_documento& rdoc = doc.new_row(tiporiga);
const long codcli = doc.get_long(DOC_CODCF);
const long codcont = doc.get_long(DOC_CODCONT);
@ -287,8 +306,27 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
//NUMERAZIONE_DDT: questa funzione cerca quali sono i codnum e i tpdoc che devo generare
bool TGenera_documenti_app::numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const
{
codnum = _configlv->get("NUM_GEN");
tpdoc = _configlv->get("TIPODOC_GEN");
//questo switc mi permette di generare con lo stesso programma sia i buoni di prelievo (P)
//che i buoni di consegna (C); la variabile globale _buono viene inizializzata con il valore
//passato come parametro al programma al momento della chiamata da menù
switch (_buono)
{
case 'P':
{
codnum = _configlv->get("NUM_PRE(0)");
tpdoc = _configlv->get("TIPODOC_PRE(0)");
}
break;
case 'C':
{
codnum = _configlv->get("NUM_GEN");
tpdoc = _configlv->get("TIPODOC_GEN");
}
break;
default: break;
}
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
statof = cache().get("%TIP",tpdoc,"S2").mid(2,1);
@ -326,15 +364,8 @@ bool TGenera_documenti_app::numerazione_dant(const int cod, TString& codnum, TSt
//CAMBIA_STATO: questa funzione cerca tutte le bolle di ritiro e anticipo relative a un certo cliente...
//in un certo intervallo di date, e gli cambia stato
void TGenera_documenti_app::cambia_stato(const long codcli, const long codind, const char ritoant)
void TGenera_documenti_app::cambia_stato(const char ritoant, const TString_array& docarr)
{
//recupero dalla maschera i campi di interesse
const TDate dadatabolla = _msk->get_date(F_DADTBOLLE);
const TDate adatabolla = _msk->get_date(F_ADTBOLLE);
const long daanno = dadatabolla.year();
const long aanno = adatabolla.year();
//per ogni paragrafo scritto in ditta.ini...
//recupero numerazione, tipo documento e stato tramite la funzione apposita
for (int i = 0; ; i++)
@ -362,39 +393,31 @@ void TGenera_documenti_app::cambia_stato(const long codcli, const long codind, c
if (!err)
break;
//instanzio un recordset che contiene tutti i documenti di interesse
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
docritiri.set_var("#STATO",TVariant(statof)); //lo stato va preso dallo sheet
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
docritiri.set_var("#CODINDSP",codind);
docritiri.set_var("#TIPOCF","C");
docritiri.set_var("#CODCF",codcli);
docritiri.set_var("#PROVV","D");
docritiri.set_var("#DAANNO",daanno);
docritiri.set_var("#DADATABOLLA",dadatabolla);
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#AANNO",aanno);
docritiri.set_var("#ADATABOLLA",adatabolla);
//per ogni documento che trovo, cambio stato al documento
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
FOR_EACH_ARRAY_ROW(docarr, r, row);
{
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
doc.put(DOC_STATO,statoi); //stato iniziale
TToken_string(row);
TString str;
str << "USE DOC\n"
<< "FROM PROVV=" << row.get(0) << " ANNO=" << row.get(1) << " CODNUM=" << row.get(2) << " NDOC=" << row.get(3) << "\n"
<< "TO PROVV=" << row.get(0) << " ANNO=" << row.get(1) << " CODNUM=" << row.get(2) << " NDOC=" << row.get(3);
TISAM_recordset docritiro (str);
if (!docritiro.empty())
{
TDocumento doc(docritiro.cursor()->curr()); //instanzio il documento
doc.put(DOC_STATO, statoi);
}
}
}
return;
}
//ELIMINA_BOLLE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora...
//nello stato iniziale in un certo intervallo di date e le elimina
void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind)
void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind, TString_array& docarr)
{
//recupero dalla maschera i campi di interesse
const TDate dadatabolla = _msk->get_date(F_DADTBOLLE);
const TDate adatabolla = _msk->get_date(F_ADTBOLLE);
const long daanno = dadatabolla.year();
const TDate adatabolla = _msk->get_date(F_DTCONS);
const long aanno = adatabolla.year();
//recupero numerazione, tipo documento e stato tramite la funzione apposita
@ -408,15 +431,13 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind)
return;
//instanzio un recordset che contiene tutti i documenti di interesse
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
docritiri.set_var("#STATO",TVariant(statof));
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
docritiri.set_var("#CODINDSP",codind);
docritiri.set_var("#TIPOCF","C");
docritiri.set_var("#CODCF",codcli);
docritiri.set_var("#PROVV","D");
docritiri.set_var("#DAANNO",daanno);
docritiri.set_var("#DADATABOLLA",dadatabolla);
docritiri.set_var("#PROVV","D");
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#AANNO",aanno);
docritiri.set_var("#ADATABOLLA",adatabolla);
@ -425,6 +446,15 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind)
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
{
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
//salvo la chiave del documento che sto cancellando
TToken_string key;
key.add(doc.get(DOC_PROVV));
key.add(doc.get(DOC_ANNO));
key.add(doc.get(DOC_CODNUM));
key.add(doc.get(DOC_NDOC));
docarr.add(key);
doc.remove(); //stato di bloccato
}
return;
@ -435,14 +465,11 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind)
//////////////////////////////////////////////////////////////
//SCANSIONE_RITIRI_ANTICIPI: questa funzione cerca tutte le bolle di ritiro relative a un certo cliente non ancora evase...
//in un certo intervallo di date, e, dopo l'elaborazione, gli cambia stato
void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant)
//e, dopo l'elaborazione, gli cambia stato
void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant, const TDocumento& docgen)
{
//recupero dalla maschera i campi di interesse
const TDate dadatabolla = _msk->get_date(F_DADTBOLLE);
const TDate adatabolla = _msk->get_date(F_ADTBOLLE);
const long daanno = dadatabolla.year();
const TDate adatabolla = _msk->get_date(F_DTCONS);
const long aanno = adatabolla.year();
//per ogni paragrafo scritto in ditta.ini...
@ -473,16 +500,13 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
break;
//instanzio un recordset che contiene tutti i documenti di interesse
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO!=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
docritiri.set_var("#STATO",TVariant(statof)); //lo stato va preso dallo sheet
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO==#STATO)&&(TIPODOC==#TIPODOC)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA");
docritiri.set_var("#STATO",TVariant(statoi)); //lo stato va preso dallo sheet
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
docritiri.set_var("#CODINDSP",codind);
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#TIPOCF","C");
docritiri.set_var("#CODCF",codcli);
docritiri.set_var("#PROVV","D");
docritiri.set_var("#DAANNO",daanno);
docritiri.set_var("#DADATABOLLA",dadatabolla);
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#PROVV","D");
docritiri.set_var("#AANNO",aanno);
docritiri.set_var("#ADATABOLLA",adatabolla);
@ -491,7 +515,12 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
{
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
calcolo_quantita(doc,ritoant);
doc.put(DOC_STATO,statof); //stato di elaborato, preso dallo sheet
doc.put(DOC_STATO,statof); //stato di elaborato, preso dallo sheet
//salvo i riferimenti del documento che sto andando a generare
doc.put("PROVVDG", docgen.get(DOC_PROVV));
doc.put("ANNODG", docgen.get(DOC_ANNO));
doc.put("CODNUMDG", docgen.get(DOC_CODNUM));
doc.put("NDCODG", docgen.get(DOC_NDOC));
}
}
return;
@ -499,13 +528,10 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
//SCANSIONE_CONSEGNE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora...
//nello stato iniziale in un certo intervallo di date
void TGenera_documenti_app::scansione_consegne(const long codcli, const long codind)
void TGenera_documenti_app::scansione_consegne(const long codcli, const long codind, const TDocumento& docgen)
{
//recupero dalla maschera i campi di interesse
const TDate dadatabolla = _msk->get_date(F_DADTBOLLE);
const TDate adatabolla = _msk->get_date(F_ADTBOLLE);
const long daanno = dadatabolla.year();
//recupero dalla maschera i campi di interesse
const TDate adatabolla = _msk->get_date(F_DTCONS);
const long aanno = adatabolla.year();
//recupero numerazione, tipo documento e stato tramite la funzione apposita
@ -519,16 +545,14 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
return;
//instanzio un recordset che contiene tutti i documenti di interesse
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO!=#STATO)&&(TIPODOC=#TIPODOC)&&(CODINDSP=#CODINDSP)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
TISAM_recordset docritiri ("USE DOC KEY 2 SELECT (STATO==#STATO)&&(TIPODOC==#TIPODOC)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA");
docritiri.set_var("#STATO",TVariant(statof));
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
docritiri.set_var("#CODINDSP",codind);
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#TIPOCF","C");
docritiri.set_var("#CODCF",codcli);
docritiri.set_var("#PROVV","D");
docritiri.set_var("#DAANNO",daanno);
docritiri.set_var("#DADATABOLLA",dadatabolla);
docritiri.set_var("#CODNUM",TVariant(codnum));
docritiri.set_var("#AANNO",aanno);
docritiri.set_var("#ADATABOLLA",adatabolla);
@ -538,6 +562,11 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
calcolo_quantita(doc,'B');
doc.put(DOC_STATO,statof); //stato di bloccato
//salvo i riferimenti del documento che sto andando a generare
doc.put("PROVVDG", docgen.get(DOC_PROVV));
doc.put("ANNODG", docgen.get(DOC_ANNO));
doc.put("CODNUMDG", docgen.get(DOC_CODNUM));
doc.put("NDCODG", docgen.get(DOC_NDOC));
}
return;
}
@ -558,7 +587,7 @@ void TGenera_documenti_app::calcolo_quantita(const TDocumento& doc, const char r
const TRiga_documento& rdoc = doc[i];
//estraggo i dati di interesse
const TString80 codart = rdoc.get(RDOC_CODARTMAG);
const real qtardoc = rdoc.get_real(RDOC_QTA);
const real qtardoc = rdoc.get_real(RDOC_QTAGG1);
//se è una riga che riguarda un articolo e se la quantità su questa riga non è nulla, allora la elaboro
if (codart.full() && !qtardoc.is_zero())
{

View File

@ -2,9 +2,10 @@
// definizione campi per maschera lv2400a
#define F_DTCONS 103
#define F_DTDOC 104
#define F_DADTBOLLE 105
#define F_ADTBOLLE 106
#define F_CODITI 107
#define F_DESCRITI 108
#define F_CODCF 109
#define F_RAGSOCCLI 110
#define F_TPGEN 105
#define F_CODITI 106
#define F_DESCRITI 107
#define F_CODAUT 108
#define F_DESCRAUT 109
#define F_CODCF 110
#define F_RAGSOCCLI 111

View File

@ -4,43 +4,36 @@ TOOLBAR "" 0 0 0 2
#include <elabar.h>
ENDPAGE
PAGE "Generazione giri" -1 -1 76 20
PAGE "Generazione documenti" -1 -1 76 20
GROUPBOX DLG_NULL 76 6
GROUPBOX DLG_NULL 76 8
BEGIN
PROMPT 1 1 "@bDati per la generazione documenti relativi ai giri"
END
DATE F_DTCONS
BEGIN
PROMPT 2 2 "Giro del "
PROMPT 2 2 "Data di prevista consegna "
CHECKTYPE REQUIRED
END
DATE F_DTDOC
BEGIN
PROMPT 30 2 "Data documento "
PROMPT 50 2 "Data documento "
FLAGS "A"
CHECKTYPE REQUIRED
END
DATE F_DADTBOLLE
LISTBOX F_TPGEN 1 37
BEGIN
PROMPT 2 3 "Considera i documenti di ritiro fino dal "
CHECKTYPE REQUIRED
END
DATE F_ADTBOLLE
BEGIN
PROMPT 55 3 " al "
VALIDATE DATE_CMP_FUNC >= F_DADTBOLLE
WARNING "Attenzione: la data deve essere maggiore di quella di inizio del periodo"
CHECKTYPE REQUIRED
PROMPT 2 3 "Generare i documenti "
ITEM "0|Fino alla data di prevista consegna"
ITEM "1|Solo per la data di prevista consegna"
END
STRING F_CODITI 3
BEGIN
PROMPT 2 4 "Itinerario "
PROMPT 2 5 "Itinerario "
FLAGS "UZ"
USE &ITI
JOIN &AUT TO &ITI ALIAS 1000 INTO CODTAB==S1
@ -59,7 +52,7 @@ END
STRING F_DESCRITI 50
BEGIN
PROMPT 23 4 ""
PROMPT 23 5 ""
USE &ITI KEY 2
INPUT S0 F_DESCRITI
DISPLAY "Descrizione@50" S0
@ -68,9 +61,40 @@ BEGIN
CHECKTYPE NORMAL
END
STRING F_CODAUT 6
BEGIN
PROMPT 2 6 "Autista "
FLAGS "UZ"
USE &ITI
JOIN &AUT TO &ITI ALIAS 1000 INTO CODTAB==S1
JOIN &MEZ TO &ITI ALIAS 2000 INTO CODTAB==S2
INPUT CODTAB F_CODITI
DISPLAY "Autista" S1
DISPLAY "Descrizione Autista@50" 1000@->S0
DISPLAY "Itinerario" CODTAB
DISPLAY "Descrizione@50" S0
DISPLAY "Targa@8" S2
DISPLAY "Descrizione Mezzo@50" 2000@->S0
OUTPUT F_CODAUT S1
OUTPUT F_DESCRAUT 1000@->S0
CHECKTYPE NORMAL
END
STRING F_DESCRAUT 50
BEGIN
PROMPT 23 6 ""
USE &AUT KEY 2
INPUT S0 F_DESCRAUT
DISPLAY "Descrizione@50" S0
DISPLAY "Codice" CODTAB
OUTPUT F_CODAUT CODTAB
OUTPUT F_DESCRAUT S0
CHECKTYPE NORMAL
END
NUMBER F_CODCF 6
BEGIN
PROMPT 2 5 "Cliente "
PROMPT 2 7 "Cliente "
FLAGS "U"
USE LF_CLIFO
INPUT TIPOCF "C"
@ -84,7 +108,7 @@ END
STRING F_RAGSOCCLI 50
BEGIN
PROMPT 23 5 ""
PROMPT 23 7 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "C"
INPUT RAGSOC F_RAGSOCCLI

View File

@ -85,7 +85,6 @@ Module = 41
Flags = ""
Item_01 = "Generazione automatica", "lv2 -0", "F"
Item_02 = "Gestione manuale", "lv2 -1", "F"
Item_04 = "Generazione bolle di consegna", "lv2 -3", "F"
[LVMENU_032]
Caption = "Stampe"
@ -99,13 +98,15 @@ Caption = "Documenti"
Picture = <lv00>
Module = 41
Flags = ""
Item_01 = "Acquisizione Bolle di rientro", "lv2 -5 lv2600a", "F"
Item_02 = "Documenti di Trasporto", "lv3 -0 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
Item_03 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
Item_04 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
Item_05 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
Item_06 = "Fatturazione", "lv2 -4", "F"
Item_07 = "Stampe", [LVMENU_050]
Item_01 = "Acquisizione da Contapezzi", "lv2 -5 lv2600a", "F"
Item_02 = "Generazione buoni di prelievo", "lv2 -3 P", "F"
Item_03 = "Generazione buoni di consegna", "lv2 -3 C", "F"
Item_04 = "Buoni di Consegna", "lv3 -0 -filtI1=1 -defNUM_GEN,TIPODOC_GEN,lv", "F"
Item_05 = "Fatture", "ve0 -1 -filtI1=2 -defNUM_FAT,TIPODOC_FAT,lv", "F"
Item_06 = "Ordini Fornitori", "ve0 -1 -filtI1=3 -defNUM_ORF,TIPODOC_ORF,lv", "F"
Item_07 = "Ordini Clienti", "ve0 -1 -filtI1=3 -defNUM_ORC,TIPODOC_ORC,lv", "F"
Item_08 = "Fatturazione", "lv2 -4", "F"
Item_09 = "Stampe", [LVMENU_050]
[LVMENU_050]
Caption = "Stampe"