diff --git a/lv/lv2400.cpp b/lv/lv2400.cpp index 546156f8e..f1ca4123a 100755 --- a/lv/lv2400.cpp +++ b/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); } diff --git a/lv/lv2400a.uml b/lv/lv2400a.uml index 8147fc602..d0eb09a7f 100755 --- a/lv/lv2400a.uml +++ b/lv/lv2400a.uml @@ -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 diff --git a/lv/lv2600.cpp b/lv/lv2600.cpp index 7f6f39543..cf0f9db3d 100755 --- a/lv/lv2600.cpp +++ b/lv/lv2600.cpp @@ -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; }