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:
parent
3587bb603a
commit
0c6f9681fe
187
lv/lv2400.cpp
187
lv/lv2400.cpp
@ -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())
|
||||
{
|
||||
|
13
lv/lv2400a.h
13
lv/lv2400a.h
@ -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
|
@ -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
|
||||
|
@ -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"
|
||||
|
Loading…
x
Reference in New Issue
Block a user