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:
luca83 2009-07-29 17:08:19 +00:00
parent c6eeb26c1d
commit 59eb735102
3 changed files with 210 additions and 174 deletions

View File

@ -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);
} }

View File

@ -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

View File

@ -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;
} }