Patch level :
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@17411 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
6b5e25dbef
commit
fedbff515d
188
lv/lv2400.cpp
188
lv/lv2400.cpp
@ -47,11 +47,14 @@ class TGenera_documenti_app : public TSkeleton_application
|
|||||||
private:
|
private:
|
||||||
//Metodi per la generazione dei documenti
|
//Metodi per la generazione dei documenti
|
||||||
bool crea_documento(const TISAM_recordset& plan);
|
bool crea_documento(const TISAM_recordset& plan);
|
||||||
void crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, TDocumento& doc);
|
void crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo,TDocumento& doc);
|
||||||
//Metodi per il recupero di codnum, tpdoc, stato
|
//Metodi per il recupero di codnum, tpdoc, stato
|
||||||
bool numerazione_ddt(TString& codnum, TString& tpdoc, TString& stato) const;
|
bool numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
|
||||||
bool numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& stato) const;
|
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& stato) 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);
|
||||||
//Metodi per la scansione dei documenti
|
//Metodi per la scansione dei documenti
|
||||||
void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant);
|
void scansione_ritiri_anticipi(const long codcli, const long codind, const char ritoant);
|
||||||
void scansione_consegne(const long codcli, const long codind);
|
void scansione_consegne(const long codcli, const long codind);
|
||||||
@ -111,7 +114,6 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
const TDate dtcons = plan.get(LVRCONSPLAN_DTCONS).as_date();
|
const TDate dtcons = plan.get(LVRCONSPLAN_DTCONS).as_date();
|
||||||
const char modpas = plan.get(LVRCONSPLAN_MODPASS).as_string()[0];
|
const char modpas = plan.get(LVRCONSPLAN_MODPASS).as_string()[0];
|
||||||
|
|
||||||
|
|
||||||
const int anno = datadoc.year();
|
const int anno = datadoc.year();
|
||||||
|
|
||||||
//preparo la chiave per la tabella contratti
|
//preparo la chiave per la tabella contratti
|
||||||
@ -123,6 +125,15 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
//estraggo i dati di interesse dalla cache
|
//estraggo i dati di interesse dalla cache
|
||||||
const long codind = tcont.get_long(LVCONDV_CODINDSP); //codice dell'indirizzo di spedizione
|
const long codind = tcont.get_long(LVCONDV_CODINDSP); //codice dell'indirizzo di spedizione
|
||||||
const int tplis = tcont.get_int(LVCONDV_TIPOLIS); //tipo listino
|
const int tplis = tcont.get_int(LVCONDV_TIPOLIS); //tipo listino
|
||||||
|
const bool prinbo = tcont.get_bool(LVCONDV_STPRZBOL); //prezzo in bolla
|
||||||
|
|
||||||
|
//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
|
//calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna
|
||||||
//...eventualmente modificate a mano
|
//...eventualmente modificate a mano
|
||||||
@ -134,16 +145,17 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
//...settati dalla funzione numerazione_ddt()
|
//...settati dalla funzione numerazione_ddt()
|
||||||
TString4 codnum;
|
TString4 codnum;
|
||||||
TString4 tpdoc;
|
TString4 tpdoc;
|
||||||
TString4 stato;
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
|
|
||||||
//se non trovo quale documento generare, evito il resto dell'elaborazione
|
//se non trovo quale documento generare, evito il resto dell'elaborazione
|
||||||
if (!numerazione_ddt(codnum, tpdoc, stato))
|
if (!numerazione_ddt(codnum, tpdoc, statoi, statof))
|
||||||
return NOERR;
|
return NOERR;
|
||||||
|
|
||||||
//creo il documento corretto riempiendo i campi che già conosco
|
//creo il documento corretto riempiendo i campi che già conosco
|
||||||
TDocumento doc('D',anno,codnum,0);
|
TDocumento doc('D',anno,codnum,0);
|
||||||
|
|
||||||
doc.put(DOC_STATO, stato);
|
doc.put(DOC_STATO, statoi);
|
||||||
doc.put(DOC_TIPODOC, tpdoc);
|
doc.put(DOC_TIPODOC, tpdoc);
|
||||||
doc.put(DOC_DATADOC, datadoc);
|
doc.put(DOC_DATADOC, datadoc);
|
||||||
doc.put(DOC_TIPOCF, 'C');
|
doc.put(DOC_TIPOCF, 'C');
|
||||||
@ -158,7 +170,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
|
|
||||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
||||||
{
|
{
|
||||||
crea_riga(codart, modpas, tplis, false, doc);
|
crea_riga(codart, modpas, tplis, false, prinbo ,doc);
|
||||||
|
|
||||||
/*const TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
/*const TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
||||||
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
||||||
@ -170,7 +182,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//CREA_RIGA: questa funzione crea una riga merce per una bolla di consegna
|
//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, 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)
|
||||||
{
|
{
|
||||||
//creo la nuova riga
|
//creo la nuova riga
|
||||||
TRiga_documento& rdoc = doc.new_row("01");
|
TRiga_documento& rdoc = doc.new_row("01");
|
||||||
@ -233,12 +245,14 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
|||||||
rdoc.put(RDOC_CODART,codart);
|
rdoc.put(RDOC_CODART,codart);
|
||||||
rdoc.put(RDOC_CODARTMAG,codart);
|
rdoc.put(RDOC_CODARTMAG,codart);
|
||||||
rdoc.put(RDOC_CHECKED,'X');
|
rdoc.put(RDOC_CHECKED,'X');
|
||||||
|
if (prinbo)
|
||||||
|
{
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PREZZO));
|
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PREZZO));
|
||||||
else //per adesso per questo ramo non ci passa mai, perchè non sappiamo come gestire le dotazioni temporanee
|
else //per adesso per questo ramo non ci passa mai, perchè non sappiamo come gestire le dotazioni temporanee
|
||||||
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PRZDTTMP));
|
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PRZDTTMP));
|
||||||
|
|
||||||
rdoc.put(RDOC_SCONTO,rcont.get(LVRCONDV_SCONTPERC)); //sconto
|
rdoc.put(RDOC_SCONTO,rcont.get(LVRCONDV_SCONTPERC)); //sconto
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
@ -246,36 +260,151 @@ 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
|
//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& stato) const
|
bool TGenera_documenti_app::numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const
|
||||||
{
|
{
|
||||||
codnum = _configlv->get("NUM_GEN");
|
codnum = _configlv->get("NUM_GEN");
|
||||||
tpdoc = _configlv->get("TIPODOC_GEN");
|
tpdoc = _configlv->get("TIPODOC_GEN");
|
||||||
//instanzio una cache sulla tabella delle righe contratti (creco lo stato iniziale)
|
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
||||||
stato = cache().get("%TIP",tpdoc,"S2").left(1);
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
|
statof = cache().get("%TIP",tpdoc,"S2").mid(2,1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
//NUMERAZIONE_DRIT: questa funzione cerca quali sono i codnum e i tpdoc dei documenti di ritiro
|
//NUMERAZIONE_DRIT: questa funzione cerca quali sono i codnum e i tpdoc dei documenti di ritiro
|
||||||
bool TGenera_documenti_app::numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& stato) const
|
bool TGenera_documenti_app::numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const
|
||||||
{
|
{
|
||||||
codnum = _configlv->get("NUM_RIT",NULL,cod);
|
codnum = _configlv->get("NUM_RIT",NULL,cod);
|
||||||
tpdoc = _configlv->get("TIPODOC_RIT",NULL,cod);
|
tpdoc = _configlv->get("TIPODOC_RIT",NULL,cod);
|
||||||
stato = _configlv->get("STATO_RIT",NULL,cod); //è lo stato finale
|
statof = _configlv->get("STATO_RIT",NULL,cod); //è lo stato finale
|
||||||
|
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
||||||
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
//NUMERAZIONE_DANT: questa funzione cerca quali sono i codnum e i tpdoc dei documenti di anticipo
|
//NUMERAZIONE_DANT: questa funzione cerca quali sono i codnum e i tpdoc dei documenti di anticipo
|
||||||
bool TGenera_documenti_app::numerazione_dant(const int cod, TString& codnum, TString& tpdoc, TString& stato) const
|
bool TGenera_documenti_app::numerazione_dant(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const
|
||||||
{
|
{
|
||||||
codnum = _configlv->get("NUM_ANT",NULL,cod);
|
codnum = _configlv->get("NUM_ANT",NULL,cod);
|
||||||
tpdoc = _configlv->get("TIPODOC_ANT",NULL,cod);
|
tpdoc = _configlv->get("TIPODOC_ANT",NULL,cod);
|
||||||
stato = _configlv->get("STATO_ANT",NULL,cod); //è lo stato finale
|
statof = _configlv->get("STATO_ANT",NULL,cod); //è lo stato finale
|
||||||
|
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
||||||
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////
|
||||||
|
//// Metodi per l'eliminazione dei documenti ////
|
||||||
|
//////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
//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)
|
||||||
|
{
|
||||||
|
//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++)
|
||||||
|
{
|
||||||
|
TString4 codnum;
|
||||||
|
TString4 tpdoc;
|
||||||
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
|
bool err;
|
||||||
|
|
||||||
|
//distinguo se sto scandendo i documenti di ritiro o i documenti di anticipo
|
||||||
|
switch (ritoant)
|
||||||
|
{
|
||||||
|
case 'R':
|
||||||
|
err = numerazione_drit(i, codnum, tpdoc, statoi, statof);
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
err = numerazione_dant(i, codnum, tpdoc, statoi, statof);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//se non trovo la numerazione richiesta, interrompo il ciclo
|
||||||
|
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())
|
||||||
|
{
|
||||||
|
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||||
|
doc.put(DOC_STATO,statoi); //stato iniziale
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
//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();
|
||||||
|
|
||||||
|
//recupero numerazione, tipo documento e stato tramite la funzione apposita
|
||||||
|
TString4 codnum;
|
||||||
|
TString4 tpdoc;
|
||||||
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
|
|
||||||
|
//se non trovo la numerazione richiesta, interrompo la funzione
|
||||||
|
if (!numerazione_ddt(codnum, tpdoc, statoi, statof))
|
||||||
|
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");
|
||||||
|
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("#CODNUM",TVariant(codnum));
|
||||||
|
docritiri.set_var("#AANNO",aanno);
|
||||||
|
docritiri.set_var("#ADATABOLLA",adatabolla);
|
||||||
|
|
||||||
|
//per ogni documento che trovo, aggiorno la quantità e gli cambio stato
|
||||||
|
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||||
|
{
|
||||||
|
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||||
|
doc.remove(); //stato di bloccato
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
//// Metodi per la scansione dei documenti ////
|
//// Metodi per la scansione dei documenti ////
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
@ -297,17 +426,18 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
|
|||||||
{
|
{
|
||||||
TString4 codnum;
|
TString4 codnum;
|
||||||
TString4 tpdoc;
|
TString4 tpdoc;
|
||||||
TString4 stato;
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
bool err;
|
bool err;
|
||||||
|
|
||||||
//distinguo se sto scandendo i documenti di ritiro o i documenti di anticipo
|
//distinguo se sto scandendo i documenti di ritiro o i documenti di anticipo
|
||||||
switch (ritoant)
|
switch (ritoant)
|
||||||
{
|
{
|
||||||
case 'R':
|
case 'R':
|
||||||
err = numerazione_drit(i, codnum, tpdoc, stato);
|
err = numerazione_drit(i, codnum, tpdoc, statoi, statof);
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
err = numerazione_dant(i, codnum, tpdoc, stato);
|
err = numerazione_dant(i, codnum, tpdoc, statoi, statof);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -319,7 +449,7 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
|
|||||||
|
|
||||||
//instanzio un recordset che contiene tutti i documenti di interesse
|
//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 ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
|
||||||
docritiri.set_var("#STATO",TVariant(stato)); //lo stato va preso dallo sheet
|
docritiri.set_var("#STATO",TVariant(statof)); //lo stato va preso dallo sheet
|
||||||
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
||||||
docritiri.set_var("#CODINDSP",codind);
|
docritiri.set_var("#CODINDSP",codind);
|
||||||
docritiri.set_var("#TIPOCF","C");
|
docritiri.set_var("#TIPOCF","C");
|
||||||
@ -336,7 +466,7 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
|
|||||||
{
|
{
|
||||||
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||||
calcolo_quantita(doc,ritoant);
|
calcolo_quantita(doc,ritoant);
|
||||||
doc.put(DOC_STATO,stato); //stato di elaborato, preso dallo sheet
|
doc.put(DOC_STATO,statof); //stato di elaborato, preso dallo sheet
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@ -356,15 +486,16 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
|
|||||||
//recupero numerazione, tipo documento e stato tramite la funzione apposita
|
//recupero numerazione, tipo documento e stato tramite la funzione apposita
|
||||||
TString4 codnum;
|
TString4 codnum;
|
||||||
TString4 tpdoc;
|
TString4 tpdoc;
|
||||||
TString4 stato;
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
|
|
||||||
//se non trovo la numerazione richiesta, interrompo la funzione
|
//se non trovo la numerazione richiesta, interrompo la funzione
|
||||||
if (!numerazione_ddt(codnum, tpdoc, stato))
|
if (!numerazione_ddt(codnum, tpdoc, statoi, statof))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//instanzio un recordset che contiene tutti i documenti di interesse
|
//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 ANNO=#DAANNO DATADOC=#DADATABOLLA CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
|
||||||
docritiri.set_var("#STATO",TVariant(stato));
|
docritiri.set_var("#STATO",TVariant(statof));
|
||||||
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
||||||
docritiri.set_var("#CODINDSP",codind);
|
docritiri.set_var("#CODINDSP",codind);
|
||||||
docritiri.set_var("#TIPOCF","C");
|
docritiri.set_var("#TIPOCF","C");
|
||||||
@ -376,11 +507,12 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
|
|||||||
docritiri.set_var("#AANNO",aanno);
|
docritiri.set_var("#AANNO",aanno);
|
||||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
docritiri.set_var("#ADATABOLLA",adatabolla);
|
||||||
|
|
||||||
//per ogni documento che trovo, aggiorno la quantità
|
//per ogni documento che trovo, aggiorno la quantità e gli cambio stato
|
||||||
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||||
{
|
{
|
||||||
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||||
calcolo_quantita(doc,'B');
|
calcolo_quantita(doc,'B');
|
||||||
|
doc.put(DOC_STATO,statof); //stato di bloccato
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user