Patch level : 10.0 patch 397
Files correlati : lv2, lv2400a.msk Ricompilazione Demo : [ ] Commento : Correzione filtri sui documenti di sporco git-svn-id: svn://10.65.10.50/trunk@19167 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c6eeb26c1d
commit
59eb735102
171
lv/lv2400.cpp
171
lv/lv2400.cpp
@ -4,6 +4,8 @@
|
|||||||
#include "lvlib.h"
|
#include "lvlib.h"
|
||||||
#include "../ve/velib.h"
|
#include "../ve/velib.h"
|
||||||
|
|
||||||
|
#include "doc.h"
|
||||||
|
#include "rdoc.h"
|
||||||
#include "lvcondv.h"
|
#include "lvcondv.h"
|
||||||
#include "lvrcondv.h"
|
#include "lvrcondv.h"
|
||||||
#include "lvrconsplan.h"
|
#include "lvrconsplan.h"
|
||||||
@ -53,7 +55,7 @@ private:
|
|||||||
void cambia_stato(const char ritoant, const TString_array& docarr);
|
void cambia_stato(const char ritoant, const TString_array& docarr);
|
||||||
void elimina_bolle(const long codcli, const long codind, TString_array& docarr);
|
void elimina_bolle(const long codcli, const long codind, TString_array& docarr);
|
||||||
//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, const TDocumento& docgen);
|
int 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);
|
void scansione_consegne(const long codcli, const long codind, const TDocumento& docgen);
|
||||||
//Metodo per il calcolo delle quantità in bolla
|
//Metodo per il calcolo delle quantità in bolla
|
||||||
void calcolo_quantita(const TDocumento& doc, const char ritoant);
|
void calcolo_quantita(const TDocumento& doc, const char ritoant);
|
||||||
@ -77,6 +79,7 @@ public:
|
|||||||
//CREATE: metodo costruttore
|
//CREATE: metodo costruttore
|
||||||
bool TGenera_documenti_app::create()
|
bool TGenera_documenti_app::create()
|
||||||
{
|
{
|
||||||
|
open_files(LF_DOC, 34, 0);
|
||||||
_msk = new TGenera_documenti_mask("lv2400a");
|
_msk = new TGenera_documenti_mask("lv2400a");
|
||||||
_configlv = new TConfig(CONFIG_DITTA,"lv");
|
_configlv = new TConfig(CONFIG_DITTA,"lv");
|
||||||
_buono = *TApplication::argv(2);
|
_buono = *TApplication::argv(2);
|
||||||
@ -113,7 +116,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
//per ogni planning recupero i dati di interesse dal planning
|
//per ogni planning recupero i dati di interesse dal planning
|
||||||
const long codcli = plan.get(LVRCONSPLAN_CODCF).as_int();
|
const long codcli = plan.get(LVRCONSPLAN_CODCF).as_int();
|
||||||
const long codcont = plan.get(LVRCONSPLAN_CODCONT).as_int();
|
const long codcont = plan.get(LVRCONSPLAN_CODCONT).as_int();
|
||||||
const TDate dtcons = plan.get(LVRCONSPLAN_DTCONS).as_date();
|
const TDate dtcons = plan.get(LVRCONSPLAN_DTCONS).as_date(); //che è anche la data documento
|
||||||
const char modpas = plan.get(LVRCONSPLAN_MODPASS).as_string()[0];
|
const char modpas = plan.get(LVRCONSPLAN_MODPASS).as_string()[0];
|
||||||
|
|
||||||
const int anno = dtcons.year();
|
const int anno = dtcons.year();
|
||||||
@ -133,10 +136,10 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
//...e riporta in stato iniziale i documenti di ritiro e di anticipo che concorrono
|
//...e riporta in stato iniziale i documenti di ritiro e di anticipo che concorrono
|
||||||
//...a calcolare le quantità da riportare sulla bolla
|
//...a calcolare le quantità da riportare sulla bolla
|
||||||
|
|
||||||
TString_array docarr; //array che conterrà i riferimenti ai documenti da cancellare
|
/*TString_array docarr; //array che conterrà i riferimenti ai documenti da cancellare
|
||||||
elimina_bolle(codcli, codind, docarr);
|
elimina_bolle(codcli, codind, docarr);
|
||||||
cambia_stato('R', docarr);
|
cambia_stato('R', docarr);
|
||||||
cambia_stato('A', docarr);
|
cambia_stato('A', docarr);*/
|
||||||
|
|
||||||
//variabili che conterranno i parametri dei documenti che devo generare...
|
//variabili che conterranno i parametri dei documenti che devo generare...
|
||||||
//...settati dalla funzione numerazione_ddt()
|
//...settati dalla funzione numerazione_ddt()
|
||||||
@ -155,10 +158,13 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
|
|
||||||
//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
|
||||||
scansione_ritiri_anticipi(codcli,codind,'R', doc);
|
int numerodoc = scansione_ritiri_anticipi(codcli, codind, 'R', doc);
|
||||||
scansione_ritiri_anticipi(codcli,codind,'A', doc);
|
//scansione_ritiri_anticipi(codcli, codind,'A', doc);
|
||||||
scansione_consegne(codcli, codind, doc);
|
//scansione_consegne(codcli, codind, doc);
|
||||||
|
|
||||||
|
int err = 1;
|
||||||
|
if(numerodoc > 0)
|
||||||
|
{
|
||||||
//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, statoi, statof))
|
if (!numerazione_ddt(codnum, tpdoc, statoi, statof))
|
||||||
return NOERR;
|
return NOERR;
|
||||||
@ -194,9 +200,10 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
crea_riga(rcont, modpas, true, doc);*/
|
crea_riga(rcont, modpas, true, doc);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
int err = 1;
|
|
||||||
if (doc.rows() > 0)
|
if (doc.rows() > 0)
|
||||||
err = doc.write();
|
err = doc.write();
|
||||||
|
else
|
||||||
|
doc.remove();
|
||||||
|
|
||||||
//scrivo sul planning il riferimento alla bolla che lo accompagna
|
//scrivo sul planning il riferimento alla bolla che lo accompagna
|
||||||
if (err == NOERR)
|
if (err == NOERR)
|
||||||
@ -207,7 +214,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan)
|
|||||||
f.put(LVRCONSPLAN_NDOC, ndoc);
|
f.put(LVRCONSPLAN_NDOC, ndoc);
|
||||||
f.rewrite();
|
f.rewrite();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return err == NOERR;
|
return err == NOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -346,9 +353,9 @@ bool TGenera_documenti_app::numerazione_ddt(TString& codnum, TString& tpdoc, TSt
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
//instanzio una cache sulla tabella dei tipi documento (cerco lo stato iniziale)
|
||||||
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
statof = cache().get("%TIP",tpdoc,"S2").mid(2,1);
|
statof = cache().get("%TIP",tpdoc,"S2").mid(1,1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
@ -356,11 +363,16 @@ bool TGenera_documenti_app::numerazione_ddt(TString& codnum, TString& tpdoc, TSt
|
|||||||
//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& statoi, TString& statof) 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);
|
TString16 tmp;
|
||||||
tpdoc = _configlv->get("TIPODOC_RIT",NULL,cod);
|
tmp << "NUM_RIT(" << cod << ")";
|
||||||
statof = _configlv->get("STATO_RIT",NULL,cod); //è lo stato finale
|
codnum = _configlv->get(tmp);
|
||||||
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
|
||||||
|
tmp.cut(0);
|
||||||
|
tmp << "TIPODOC_RIT(" << cod << ")";
|
||||||
|
tpdoc = _configlv->get(tmp);
|
||||||
|
//instanzio una cache sulla tabella tipi documento (cerco lo stato iniziale)
|
||||||
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
|
statof = cache().get("%TIP",tpdoc,"S2").mid(1,1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
@ -370,9 +382,9 @@ bool TGenera_documenti_app::numerazione_dant(const int cod, TString& codnum, TSt
|
|||||||
{
|
{
|
||||||
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);
|
||||||
statof = _configlv->get("STATO_ANT",NULL,cod); //è lo stato finale
|
|
||||||
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
||||||
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
statoi = cache().get("%TIP",tpdoc,"S2").left(1);
|
||||||
|
statof = cache().get("%TIP",tpdoc,"S2").mid(1,1);
|
||||||
|
|
||||||
return codnum.full() && tpdoc.full();
|
return codnum.full() && tpdoc.full();
|
||||||
}
|
}
|
||||||
@ -439,6 +451,10 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind,
|
|||||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||||
const long aanno = adatabolla.year();
|
const long aanno = adatabolla.year();
|
||||||
|
|
||||||
|
TDate dadatabolla = adatabolla; dadatabolla.set_month(adatabolla.month() - 2);
|
||||||
|
const long daanno = dadatabolla.year();
|
||||||
|
|
||||||
|
|
||||||
//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;
|
||||||
@ -450,21 +466,19 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind,
|
|||||||
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 CODNUM=#CODNUM\nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA CODNUM=#CODNUM");
|
TString query;
|
||||||
docritiri.set_var("#STATO",TVariant(statof));
|
query << "USE DOC "
|
||||||
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
<< "SELECT (TIPOCF=\"C\")&&(CODCF=" << codcli
|
||||||
docritiri.set_var("#CODINDSP",codind);
|
<< ")&&(TIPODOC=\"" << tpdoc << "\")&&(STATO=\"" << statoi <<"\")&&(DATADOC>=" << dadatabolla << ")\n"
|
||||||
docritiri.set_var("#TIPOCF","C");
|
<< "FROM PROVV=\"D\" ANNO=" << daanno << " CODNUM=\"" << codnum << "\"\n"
|
||||||
docritiri.set_var("#CODCF",codcli);
|
<< "TO PROVV=\"D\" ANNO=" << aanno << " CODNUM=\"" << codnum << "\"\n";
|
||||||
docritiri.set_var("#PROVV","D");
|
|
||||||
docritiri.set_var("#CODNUM",TVariant(codnum));
|
TISAM_recordset bolle(query);
|
||||||
docritiri.set_var("#AANNO",aanno);
|
|
||||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
|
||||||
|
|
||||||
//per ogni documento che trovo, aggiorno la quantità e gli cambio stato
|
//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 = bolle.move_first(); ok; ok = bolle.move_next())
|
||||||
{
|
{
|
||||||
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
TDocumento doc(bolle.cursor()->curr()); //instanzio il documento
|
||||||
|
|
||||||
//salvo la chiave del documento che sto cancellando
|
//salvo la chiave del documento che sto cancellando
|
||||||
TToken_string key;
|
TToken_string key;
|
||||||
@ -485,49 +499,43 @@ 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...
|
//SCANSIONE_RITIRI_ANTICIPI: questa funzione cerca tutte le bolle di ritiro relative a un certo cliente non ancora evase...
|
||||||
//e, dopo l'elaborazione, gli cambia stato
|
//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)
|
int 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
|
//recupero dalla maschera i campi di interesse
|
||||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||||
const long aanno = adatabolla.year();
|
const long aanno = adatabolla.year();
|
||||||
|
|
||||||
//per ogni paragrafo scritto in ditta.ini...
|
TDate dadatabolla = adatabolla; dadatabolla.set_month(adatabolla.month() - 2);
|
||||||
//recupero numerazione, tipo documento e stato tramite la funzione apposita
|
const long daanno = dadatabolla.year();
|
||||||
for (int i = 0; ; i++)
|
|
||||||
{
|
|
||||||
TString4 codnum;
|
TString4 codnum;
|
||||||
TString4 tpdoc;
|
TString4 tpdoc;
|
||||||
TString4 statoi;
|
TString4 statoi;
|
||||||
TString4 statof;
|
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, statoi, statof);
|
err = numerazione_drit(0, codnum, tpdoc, statoi, statof);
|
||||||
break;
|
break;
|
||||||
case 'A':
|
case 'A':
|
||||||
err = numerazione_dant(i, codnum, tpdoc, statoi, statof);
|
err = numerazione_dant(0, codnum, tpdoc, statoi, statof);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//se non trovo la numerazione richiesta, interrompo il ciclo
|
//instanzio un recordset che contiene tutti i documenti di interesse
|
||||||
if (!err)
|
TString query;
|
||||||
break;
|
query << "USE DOC "
|
||||||
|
<< "SELECT (TIPOCF=\"C\")&&(CODCF=" << codcli
|
||||||
|
<< ")&&(TIPODOC=\"" << tpdoc << "\")&&(STATO=\"" << statoi <<"\")\n"
|
||||||
|
<< "FROM PROVV=\"D\" ANNO=" << daanno << " CODNUM=\"" << codnum << "\"\n"
|
||||||
|
<< "TO PROVV=\"D\" ANNO=" << aanno << " CODNUM=\"" << codnum << "\"\n";
|
||||||
|
|
||||||
//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)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA");
|
TISAM_recordset docritiri(query);
|
||||||
docritiri.set_var("#STATO",TVariant(statoi)); //lo stato va preso dallo sheet
|
|
||||||
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
|
||||||
docritiri.set_var("#CODNUM",TVariant(codnum));
|
|
||||||
docritiri.set_var("#TIPOCF","C");
|
|
||||||
docritiri.set_var("#CODCF",codcli);
|
|
||||||
docritiri.set_var("#PROVV","D");
|
|
||||||
docritiri.set_var("#AANNO",aanno);
|
|
||||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
|
||||||
|
|
||||||
//per ogni documento che trovo, aggiorno la quantità, e poi cambio stato al documento
|
//per ogni documento che trovo, aggiorno la quantità, e poi cambio stato al documento
|
||||||
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||||
@ -540,9 +548,11 @@ void TGenera_documenti_app::scansione_ritiri_anticipi(const long codcli, const l
|
|||||||
doc.put("ANNODG", docgen.get(DOC_ANNO));
|
doc.put("ANNODG", docgen.get(DOC_ANNO));
|
||||||
doc.put("CODNUMDG", docgen.get(DOC_CODNUM));
|
doc.put("CODNUMDG", docgen.get(DOC_CODNUM));
|
||||||
doc.put("NDCODG", docgen.get(DOC_NDOC));
|
doc.put("NDCODG", docgen.get(DOC_NDOC));
|
||||||
|
|
||||||
|
doc.rewrite();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
return docritiri.items();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//SCANSIONE_CONSEGNE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora...
|
//SCANSIONE_CONSEGNE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora...
|
||||||
@ -553,6 +563,9 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
|
|||||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||||
const long aanno = adatabolla.year();
|
const long aanno = adatabolla.year();
|
||||||
|
|
||||||
|
TDate dadatabolla = adatabolla; dadatabolla.set_month(adatabolla.month() - 2);
|
||||||
|
const long daanno = dadatabolla.year();
|
||||||
|
|
||||||
//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;
|
||||||
@ -564,16 +577,14 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
|
|||||||
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)&&(CODNUM==#CODNUM)\nFROM TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV \nTO TIPOCF=#TIPOCF CODCF=#CODCF PROVV=#PROVV ANNO=#AANNO DATADOC=#ADATABOLLA");
|
TString query;
|
||||||
docritiri.set_var("#STATO",TVariant(statof));
|
query << "USE DOC "
|
||||||
docritiri.set_var("#TIPODOC",TVariant(tpdoc));
|
<< "SELECT (TIPOCF=\"C\")&&(CODCF=" << codcli
|
||||||
docritiri.set_var("#CODINDSP",codind);
|
<< ")&&(TIPODOC=\"" << tpdoc << "\")&&(STATO=\"" << statoi <<"\")\n"
|
||||||
docritiri.set_var("#CODNUM",TVariant(codnum));
|
<< "FROM PROVV=\"D\" ANNO=" << daanno << " CODNUM=\"" << codnum << "\"\n"
|
||||||
docritiri.set_var("#TIPOCF","C");
|
<< "TO PROVV=\"D\" ANNO=" << aanno << " CODNUM=\"" << codnum << "\"\n";
|
||||||
docritiri.set_var("#CODCF",codcli);
|
//instanzio un recordset che contiene tutti i documenti di interesse
|
||||||
docritiri.set_var("#PROVV","D");
|
TISAM_recordset docritiri (query);
|
||||||
docritiri.set_var("#AANNO",aanno);
|
|
||||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
|
||||||
|
|
||||||
//per ogni documento che trovo, aggiorno la quantità e gli cambio stato
|
//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())
|
||||||
@ -687,6 +698,38 @@ bool TGenera_documenti_app::transfer()
|
|||||||
long codcli = _msk->get_long(F_CODCF);
|
long codcli = _msk->get_long(F_CODCF);
|
||||||
long codaut = _msk->get_long(F_CODAUT);
|
long codaut = _msk->get_long(F_CODAUT);
|
||||||
|
|
||||||
|
int daanno = dadatacons.year();
|
||||||
|
int aanno = adatacons.year();
|
||||||
|
|
||||||
|
TString4 codnum;
|
||||||
|
TString4 tpdoc;
|
||||||
|
TString4 statoi;
|
||||||
|
TString4 statof;
|
||||||
|
bool err;
|
||||||
|
|
||||||
|
numerazione_drit(0, codnum, tpdoc, statoi, statof);
|
||||||
|
|
||||||
|
//instanzio un recordset che contiene tutti i documenti di interesse
|
||||||
|
TString query_bolle = "USE DOC\nSELECT ";
|
||||||
|
|
||||||
|
if(codcli > 0)
|
||||||
|
query_bolle << "(TIPOCF=\"C\")&&(CODCF=" << codcli << ")&&\n";
|
||||||
|
|
||||||
|
query_bolle <<"(TIPODOC=\"" << tpdoc << "\")&&(STATO=\"" << statoi << "\")\n";
|
||||||
|
query_bolle << "FROM PROVV=\"D\" ANNO=" << daanno << " CODNUM=\"" << codnum << "\"\n";
|
||||||
|
query_bolle << "TO PROVV=\"D\" ANNO=" << aanno << " CODNUM=\"" << codnum << "\"\n";
|
||||||
|
|
||||||
|
TISAM_recordset docritiri(query_bolle);
|
||||||
|
|
||||||
|
TProgind pi(docritiri.items(), TR("Generazione documenti in corso..."), true, true);
|
||||||
|
|
||||||
|
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||||
|
{
|
||||||
|
if (!pi.addstatus(1))
|
||||||
|
break;
|
||||||
|
|
||||||
|
codcli = docritiri.get(DOC_CODCF).as_int();
|
||||||
|
|
||||||
//preparo un recordset che contiene tutti planning per cui voglio creare i documenti relativi
|
//preparo un recordset che contiene tutti planning per cui voglio creare i documenti relativi
|
||||||
TString query = "USE LVRCONSPLAN KEY 2";
|
TString query = "USE LVRCONSPLAN KEY 2";
|
||||||
|
|
||||||
@ -716,13 +759,7 @@ bool TGenera_documenti_app::transfer()
|
|||||||
query << "TO DTCONS=" << adatacons << "\n";
|
query << "TO DTCONS=" << adatacons << "\n";
|
||||||
|
|
||||||
TISAM_recordset plan(query);
|
TISAM_recordset plan(query);
|
||||||
|
plan.move_first();
|
||||||
TProgind pi(plan.items(), TR("Generazione documenti in corso..."), true, true);
|
|
||||||
|
|
||||||
for (bool ok = plan.move_first(); ok; ok = plan.move_next())
|
|
||||||
{
|
|
||||||
if (!pi.addstatus(1))
|
|
||||||
break;
|
|
||||||
|
|
||||||
crea_documento(plan);
|
crea_documento(plan);
|
||||||
}
|
}
|
||||||
|
@ -17,12 +17,12 @@ BEGIN
|
|||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_DTDOC
|
/*DATE F_DTDOC
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 50 2 "Data documento "
|
PROMPT 50 2 "Data documento "
|
||||||
FLAGS "A"
|
FLAGS "A"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
END
|
END*/
|
||||||
|
|
||||||
LISTBOX F_TPGEN 1 37
|
LISTBOX F_TPGEN 1 37
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@ -99,8 +99,6 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
|||||||
query << "TO TIPOCF=C CODCF=" << codcf << " PROVV=D ANNO=" << datadoc.year() << " DATADOC=" << datadoc << " CODNUM=" << _codnum << "\n";
|
query << "TO TIPOCF=C CODCF=" << codcf << " PROVV=D ANNO=" << datadoc.year() << " DATADOC=" << datadoc << " CODNUM=" << _codnum << "\n";
|
||||||
TISAM_recordset rset(query);
|
TISAM_recordset rset(query);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TDocumento* doc = NULL;
|
TDocumento* doc = NULL;
|
||||||
|
|
||||||
if (rset.move_first())
|
if (rset.move_first())
|
||||||
@ -115,6 +113,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
|||||||
query1 << "TO CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=" << adata << "\n";
|
query1 << "TO CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=" << adata << "\n";
|
||||||
TISAM_recordset consegne(query1);
|
TISAM_recordset consegne(query1);
|
||||||
consegne.move_first();
|
consegne.move_first();
|
||||||
|
const TDate dataprco = consegne.get(LVRCONSPLAN_DTCONS).as_date();
|
||||||
|
|
||||||
doc = new TDocumento('D',datadoc.year(),_codnum,0);
|
doc = new TDocumento('D',datadoc.year(),_codnum,0);
|
||||||
doc->put(DOC_TIPODOC, _tipodoc);
|
doc->put(DOC_TIPODOC, _tipodoc);
|
||||||
@ -124,7 +123,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
|||||||
doc->put(DOC_CODCF, codcf);
|
doc->put(DOC_CODCF, codcf);
|
||||||
doc->put(DOC_CODCONT, codcont);
|
doc->put(DOC_CODCONT, codcont);
|
||||||
doc->put("DATAGEN", datagen);
|
doc->put("DATAGEN", datagen);
|
||||||
doc->put("DATAPRCO", consegne.get(LVRCONSPLAN_DTCONS).as_date());
|
doc->put("DATAPRCO", dataprco);
|
||||||
}
|
}
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user