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
373
lv/lv2400.cpp
373
lv/lv2400.cpp
@ -4,6 +4,8 @@
|
||||
#include "lvlib.h"
|
||||
#include "../ve/velib.h"
|
||||
|
||||
#include "doc.h"
|
||||
#include "rdoc.h"
|
||||
#include "lvcondv.h"
|
||||
#include "lvrcondv.h"
|
||||
#include "lvrconsplan.h"
|
||||
@ -53,7 +55,7 @@ private:
|
||||
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, 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);
|
||||
//Metodo per il calcolo delle quantità in bolla
|
||||
void calcolo_quantita(const TDocumento& doc, const char ritoant);
|
||||
@ -77,6 +79,7 @@ public:
|
||||
//CREATE: metodo costruttore
|
||||
bool TGenera_documenti_app::create()
|
||||
{
|
||||
open_files(LF_DOC, 34, 0);
|
||||
_msk = new TGenera_documenti_mask("lv2400a");
|
||||
_configlv = new TConfig(CONFIG_DITTA,"lv");
|
||||
_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
|
||||
const long codcli = plan.get(LVRCONSPLAN_CODCF).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 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
|
||||
//...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);
|
||||
cambia_stato('R', docarr);
|
||||
cambia_stato('A', docarr);
|
||||
cambia_stato('A', docarr);*/
|
||||
|
||||
//variabili che conterranno i parametri dei documenti che devo generare...
|
||||
//...settati dalla funzione numerazione_ddt()
|
||||
@ -155,59 +158,63 @@ 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
|
||||
//...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, dtcons);
|
||||
doc.put(DOC_TIPOCF, 'C');
|
||||
doc.put(DOC_CODCF, codcli);
|
||||
doc.put(DOC_CODCONT, codcont);
|
||||
|
||||
//per evitare che ci metta uno zero
|
||||
if (codind > 0)
|
||||
doc.put(DOC_CODINDSP, codind);
|
||||
|
||||
doc.put("DATAGEN", datagen);
|
||||
doc.put("DATAPRCO", dtcons);
|
||||
|
||||
const long ndoc = doc.get_long(DOC_NDOC);
|
||||
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keycont.add(codcli);
|
||||
keycont.add(codcont);
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
||||
{
|
||||
crea_riga(codart, modpas, tplis, false, prinbo ,doc);
|
||||
|
||||
/*const TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
||||
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
||||
if (dadata.ok() && dtcons >= dadata && dtcons <= adata)
|
||||
crea_riga(rcont, modpas, true, doc);*/
|
||||
}
|
||||
int numerodoc = scansione_ritiri_anticipi(codcli, codind, 'R', doc);
|
||||
//scansione_ritiri_anticipi(codcli, codind,'A', doc);
|
||||
//scansione_consegne(codcli, codind, doc);
|
||||
|
||||
int err = 1;
|
||||
if (doc.rows() > 0)
|
||||
err = doc.write();
|
||||
|
||||
//scrivo sul planning il riferimento alla bolla che lo accompagna
|
||||
if (err == NOERR)
|
||||
if(numerodoc > 0)
|
||||
{
|
||||
TLocalisamfile& f = plan.cursor()->file();
|
||||
f.put(LVRCONSPLAN_ANNO, anno);
|
||||
f.put(LVRCONSPLAN_CODNUM, codnum);
|
||||
f.put(LVRCONSPLAN_NDOC, ndoc);
|
||||
f.rewrite();
|
||||
}
|
||||
//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, dtcons);
|
||||
doc.put(DOC_TIPOCF, 'C');
|
||||
doc.put(DOC_CODCF, codcli);
|
||||
doc.put(DOC_CODCONT, codcont);
|
||||
|
||||
//per evitare che ci metta uno zero
|
||||
if (codind > 0)
|
||||
doc.put(DOC_CODINDSP, codind);
|
||||
|
||||
doc.put("DATAGEN", datagen);
|
||||
doc.put("DATAPRCO", dtcons);
|
||||
|
||||
const long ndoc = doc.get_long(DOC_NDOC);
|
||||
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keycont.add(codcli);
|
||||
keycont.add(codcont);
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
||||
{
|
||||
crea_riga(codart, modpas, tplis, false, prinbo ,doc);
|
||||
|
||||
/*const TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
||||
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
||||
if (dadata.ok() && dtcons >= dadata && dtcons <= adata)
|
||||
crea_riga(rcont, modpas, true, doc);*/
|
||||
}
|
||||
|
||||
if (doc.rows() > 0)
|
||||
err = doc.write();
|
||||
else
|
||||
doc.remove();
|
||||
|
||||
//scrivo sul planning il riferimento alla bolla che lo accompagna
|
||||
if (err == NOERR)
|
||||
{
|
||||
TLocalisamfile& f = plan.cursor()->file();
|
||||
f.put(LVRCONSPLAN_ANNO, anno);
|
||||
f.put(LVRCONSPLAN_CODNUM, codnum);
|
||||
f.put(LVRCONSPLAN_NDOC, ndoc);
|
||||
f.rewrite();
|
||||
}
|
||||
}
|
||||
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);
|
||||
statof = cache().get("%TIP",tpdoc,"S2").mid(2,1);
|
||||
statof = cache().get("%TIP",tpdoc,"S2").mid(1,1);
|
||||
|
||||
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
|
||||
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);
|
||||
tpdoc = _configlv->get("TIPODOC_RIT",NULL,cod);
|
||||
statof = _configlv->get("STATO_RIT",NULL,cod); //è lo stato finale
|
||||
//instanzio una cache sulla tabella delle righe contratti (cerco lo stato iniziale)
|
||||
TString16 tmp;
|
||||
tmp << "NUM_RIT(" << cod << ")";
|
||||
codnum = _configlv->get(tmp);
|
||||
|
||||
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);
|
||||
statof = cache().get("%TIP",tpdoc,"S2").mid(1,1);
|
||||
|
||||
return codnum.full() && tpdoc.full();
|
||||
}
|
||||
@ -369,10 +381,10 @@ bool TGenera_documenti_app::numerazione_drit(const int cod, TString& codnum, TSt
|
||||
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);
|
||||
tpdoc = _configlv->get("TIPODOC_ANT",NULL,cod);
|
||||
statof = _configlv->get("STATO_ANT",NULL,cod); //è lo stato finale
|
||||
tpdoc = _configlv->get("TIPODOC_ANT",NULL,cod);
|
||||
//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(1,1);
|
||||
|
||||
return codnum.full() && tpdoc.full();
|
||||
}
|
||||
@ -438,6 +450,10 @@ void TGenera_documenti_app::elimina_bolle(const long codcli, const long codind,
|
||||
//recupero dalla maschera i campi di interesse
|
||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||
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
|
||||
TString4 codnum;
|
||||
@ -450,22 +466,20 @@ 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 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("#CODNUM",TVariant(codnum));
|
||||
docritiri.set_var("#AANNO",aanno);
|
||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
||||
TString query;
|
||||
query << "USE DOC "
|
||||
<< "SELECT (TIPOCF=\"C\")&&(CODCF=" << codcli
|
||||
<< ")&&(TIPODOC=\"" << tpdoc << "\")&&(STATO=\"" << statoi <<"\")&&(DATADOC>=" << dadatabolla << ")\n"
|
||||
<< "FROM PROVV=\"D\" ANNO=" << daanno << " CODNUM=\"" << codnum << "\"\n"
|
||||
<< "TO PROVV=\"D\" ANNO=" << aanno << " CODNUM=\"" << codnum << "\"\n";
|
||||
|
||||
TISAM_recordset bolle(query);
|
||||
|
||||
//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
|
||||
TToken_string key;
|
||||
key.add(doc.get(DOC_PROVV));
|
||||
@ -485,64 +499,60 @@ 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...
|
||||
//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
|
||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||
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++)
|
||||
TDate dadatabolla = adatabolla; dadatabolla.set_month(adatabolla.month() - 2);
|
||||
const long daanno = dadatabolla.year();
|
||||
|
||||
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)
|
||||
{
|
||||
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)&&(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("#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
|
||||
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||
{
|
||||
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||
calcolo_quantita(doc,ritoant);
|
||||
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));
|
||||
}
|
||||
case 'R':
|
||||
err = numerazione_drit(0, codnum, tpdoc, statoi, statof);
|
||||
break;
|
||||
case 'A':
|
||||
err = numerazione_dant(0, codnum, tpdoc, statoi, statof);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
//instanzio un recordset che contiene tutti i documenti di interesse
|
||||
TString query;
|
||||
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
|
||||
TISAM_recordset docritiri(query);
|
||||
|
||||
//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())
|
||||
{
|
||||
TDocumento doc(docritiri.cursor()->curr()); //instanzio il documento
|
||||
calcolo_quantita(doc, ritoant);
|
||||
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));
|
||||
|
||||
doc.rewrite();
|
||||
|
||||
}
|
||||
return docritiri.items();
|
||||
}
|
||||
|
||||
//SCANSIONE_CONSEGNE: questa funzione cerca tutte le bolle di consegna relative a un certo cliente ancora...
|
||||
@ -552,6 +562,9 @@ void TGenera_documenti_app::scansione_consegne(const long codcli, const long cod
|
||||
//recupero dalla maschera i campi di interesse
|
||||
const TDate adatabolla = _msk->get_date(F_DTCONS);
|
||||
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
|
||||
TString4 codnum;
|
||||
@ -564,16 +577,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)&&(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("#AANNO",aanno);
|
||||
docritiri.set_var("#ADATABOLLA",adatabolla);
|
||||
TString query;
|
||||
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
|
||||
TISAM_recordset docritiri (query);
|
||||
|
||||
//per ogni documento che trovo, aggiorno la quantità e gli cambio stato
|
||||
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
|
||||
@ -687,43 +698,69 @@ bool TGenera_documenti_app::transfer()
|
||||
long codcli = _msk->get_long(F_CODCF);
|
||||
long codaut = _msk->get_long(F_CODAUT);
|
||||
|
||||
//preparo un recordset che contiene tutti planning per cui voglio creare i documenti relativi
|
||||
TString query = "USE LVRCONSPLAN KEY 2";
|
||||
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);
|
||||
|
||||
if (coditi || codcli || codaut)
|
||||
//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())
|
||||
{
|
||||
query << " SELECT ";
|
||||
if (codcli > 0)
|
||||
query << "(CODCF=" << codcli << ')';
|
||||
if (coditi > 0)
|
||||
{
|
||||
if (codcli > 0)
|
||||
query << "&&";
|
||||
query << "(CODITI=" << coditi << ')';
|
||||
}
|
||||
if (codaut > 0)
|
||||
{
|
||||
if (codcli > 0 || coditi > 0)
|
||||
query << "&&";
|
||||
query << "(CODAUT=" << codaut << ')';
|
||||
}
|
||||
}
|
||||
query << "\n";
|
||||
if(_msk->get_int(F_TPGEN) == 1)
|
||||
query << "FROM DTCONS=" << adatacons << "\n";
|
||||
else
|
||||
query << "FROM DTCONS=" << dadatacons << "\n";
|
||||
query << "TO DTCONS=" << adatacons << "\n";
|
||||
|
||||
TISAM_recordset plan(query);
|
||||
|
||||
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))
|
||||
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
|
||||
TString query = "USE LVRCONSPLAN KEY 2";
|
||||
|
||||
if (coditi || codcli || codaut)
|
||||
{
|
||||
query << " SELECT ";
|
||||
if (codcli > 0)
|
||||
query << "(CODCF=" << codcli << ')';
|
||||
if (coditi > 0)
|
||||
{
|
||||
if (codcli > 0)
|
||||
query << "&&";
|
||||
query << "(CODITI=" << coditi << ')';
|
||||
}
|
||||
if (codaut > 0)
|
||||
{
|
||||
if (codcli > 0 || coditi > 0)
|
||||
query << "&&";
|
||||
query << "(CODAUT=" << codaut << ')';
|
||||
}
|
||||
}
|
||||
query << "\n";
|
||||
if(_msk->get_int(F_TPGEN) == 1)
|
||||
query << "FROM DTCONS=" << adatacons << "\n";
|
||||
else
|
||||
query << "FROM DTCONS=" << dadatacons << "\n";
|
||||
query << "TO DTCONS=" << adatacons << "\n";
|
||||
|
||||
TISAM_recordset plan(query);
|
||||
plan.move_first();
|
||||
|
||||
crea_documento(plan);
|
||||
}
|
||||
|
||||
|
@ -17,12 +17,12 @@ BEGIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_DTDOC
|
||||
/*DATE F_DTDOC
|
||||
BEGIN
|
||||
PROMPT 50 2 "Data documento "
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
END*/
|
||||
|
||||
LISTBOX F_TPGEN 1 37
|
||||
BEGIN
|
||||
|
@ -97,9 +97,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
||||
query << "SELECT (TIPODOC=\"" << _tipodoc << "\" && STATO=" << _stato <<")\n";
|
||||
query << "FROM 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;
|
||||
|
||||
@ -115,6 +113,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
||||
query1 << "TO CODCF=" << codcf << " CODCONT=" << codcont << " DTCONS=" << adata << "\n";
|
||||
TISAM_recordset consegne(query1);
|
||||
consegne.move_first();
|
||||
const TDate dataprco = consegne.get(LVRCONSPLAN_DTCONS).as_date();
|
||||
|
||||
doc = new TDocumento('D',datadoc.year(),_codnum,0);
|
||||
doc->put(DOC_TIPODOC, _tipodoc);
|
||||
@ -124,7 +123,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
||||
doc->put(DOC_CODCF, codcf);
|
||||
doc->put(DOC_CODCONT, codcont);
|
||||
doc->put("DATAGEN", datagen);
|
||||
doc->put("DATAPRCO", consegne.get(LVRCONSPLAN_DTCONS).as_date());
|
||||
doc->put("DATAPRCO", dataprco);
|
||||
}
|
||||
return doc;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user