Patch level : 10.0 patch 260
Files correlati : lv2 Ricompilazione Demo : [ ] Commento : Corretto salvataggio dei documenti creati Corretta gestione scelta del comportamento da tenere in caso di doppia importazione git-svn-id: svn://10.65.10.50/trunk@18554 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
c957154c8c
commit
8653d3522f
@ -49,7 +49,7 @@ TAcquisizione_msk::TAcquisizione_msk():TAutomask("lv2600a")
|
|||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
|
|
||||||
//classe TAcquisizione_cache
|
//classe TAcquisizione_cache
|
||||||
class TAcquisizione_cache : TCache
|
class TAcquisizione_cache : public TCache
|
||||||
{
|
{
|
||||||
TString4 _codnum, _tipodoc, _stato;
|
TString4 _codnum, _tipodoc, _stato;
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ public:
|
|||||||
void TAcquisizione_cache::discarding(const THash_object* obj)
|
void TAcquisizione_cache::discarding(const THash_object* obj)
|
||||||
{
|
{
|
||||||
TDocumento& doc = (TDocumento&)obj->obj();
|
TDocumento& doc = (TDocumento&)obj->obj();
|
||||||
doc.rewrite();
|
int err = doc.rewrite();
|
||||||
}
|
}
|
||||||
|
|
||||||
//KEY2OBJ: metodo che sceglie il documento giusto da disco in modo da poterlo continuare, o lo crea se non c'è
|
//KEY2OBJ: metodo che sceglie il documento giusto da disco in modo da poterlo continuare, o lo crea se non c'è
|
||||||
@ -76,19 +76,11 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
|||||||
const TDate datadoc = chiave.get();
|
const TDate datadoc = chiave.get();
|
||||||
const long codcf = chiave.get_long();
|
const long codcf = chiave.get_long();
|
||||||
|
|
||||||
TString query;
|
TString query = "USE DOC KEY 2\n";
|
||||||
query<< "USE DOC KEY 2 SELECT STATO=#STATO\n";
|
query << "SELECT (TIPODOC=\"" << _tipodoc << "\" && STATO=" << _stato <<")\n";
|
||||||
for (int i = 0; i < 2; i++)
|
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";
|
||||||
query << (i ? "TO" : "FROM") << " "
|
|
||||||
<< "TIPOCF=C CODCF=#CODCF ANNO=#ANNO DATADOC=#DATADOC CODNUM=#CODNUM\n";
|
|
||||||
}
|
|
||||||
TISAM_recordset rset(query);
|
TISAM_recordset rset(query);
|
||||||
rset.set_var("#STATO", TVariant(_stato));
|
|
||||||
rset.set_var("#CODCF", codcf);
|
|
||||||
rset.set_var("#ANNO", long(datadoc.year()));
|
|
||||||
rset.set_var("#DATADOC", datadoc);
|
|
||||||
rset.set_var("#CODNUM", TVariant(_codnum));
|
|
||||||
|
|
||||||
TDocumento* doc = NULL;
|
TDocumento* doc = NULL;
|
||||||
|
|
||||||
@ -100,7 +92,7 @@ TObject* TAcquisizione_cache::key2obj(const char* key)
|
|||||||
doc->put(DOC_TIPODOC, _tipodoc);
|
doc->put(DOC_TIPODOC, _tipodoc);
|
||||||
doc->put(DOC_STATO, _stato);
|
doc->put(DOC_STATO, _stato);
|
||||||
doc->put(DOC_DATADOC, datadoc);
|
doc->put(DOC_DATADOC, datadoc);
|
||||||
doc->put(DOC_TIPOCF, "C");
|
doc->put(DOC_TIPOCF, 'C');
|
||||||
doc->put(DOC_CODCF, codcf);
|
doc->put(DOC_CODCF, codcf);
|
||||||
}
|
}
|
||||||
return doc;
|
return doc;
|
||||||
@ -119,7 +111,7 @@ TAcquisizione_cache::TAcquisizione_cache() : TCache(17)
|
|||||||
{
|
{
|
||||||
TConfig cfg(CONFIG_DITTA, "lv");
|
TConfig cfg(CONFIG_DITTA, "lv");
|
||||||
_codnum = cfg.get("NUM_RIT", NULL, 0);
|
_codnum = cfg.get("NUM_RIT", NULL, 0);
|
||||||
_tipodoc = cfg.get("TIPOOC_RIT", NULL, 0);
|
_tipodoc = cfg.get("TIPODOC_RIT", NULL, 0);
|
||||||
_stato = cfg.get("STATO_RIT", NULL, 0);
|
_stato = cfg.get("STATO_RIT", NULL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,6 +124,8 @@ class TAcquisizione_lavanderie_app : public TSkeleton_application
|
|||||||
{
|
{
|
||||||
TAcquisizione_msk* _msk;
|
TAcquisizione_msk* _msk;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
@ -166,6 +160,8 @@ void TAcquisizione_lavanderie_app::elabora_file(const TString& file, bool new_fi
|
|||||||
{
|
{
|
||||||
TAcquisizione_cache ca;
|
TAcquisizione_cache ca;
|
||||||
|
|
||||||
|
bool sovrascrivi = true;
|
||||||
|
TAssoc_array deleted_docs;
|
||||||
//scandisco il file
|
//scandisco il file
|
||||||
TScanner s(file);
|
TScanner s(file);
|
||||||
while (s.ok())
|
while (s.ok())
|
||||||
@ -223,25 +219,44 @@ void TAcquisizione_lavanderie_app::elabora_file(const TString& file, bool new_fi
|
|||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
||||||
TDocumento& doc = ca.doc(datadoc,codcf);
|
TDocumento& doc = ca.doc(datadoc,codcf);
|
||||||
//cerco se esiste già una riga sul documento selezionato per quell'articolo;
|
|
||||||
//se la trovo sommo la quantità appena letta a quella già esistente,
|
//se sto elaborando un nuovo file, ma i documenti che sto importando esistono già, chiedi cosa devo fare
|
||||||
//altrimenti creo una nuova riga documento
|
|
||||||
if (doc.rows() > 0 && new_file)
|
if (doc.rows() > 0 && new_file)
|
||||||
{
|
{
|
||||||
if (!yesno_box(TR("ATTENZIONE: il documento che si sta importando esiste già!\nSi desidera continuare?")))
|
KEY k = yesnocancel_box(TR("ATTENZIONE: il documento che si sta importando esiste già! Si desidera continuare?\n"
|
||||||
return;
|
"Premendo SI il documento verrà sovracsritto;\n"
|
||||||
else if (yesno_box(TR("ATTENZIONE: Si desidera sovrascrivere il documento esistente(rispondendo NO le quantità verranno sommate a quelle esistenti)?")))
|
"Premendo NO le quantità verranno sommate a quelle esistenti\n"
|
||||||
|
"Premendo CANCEL il file verrà ignorato"));
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case K_YES: sovrascrivi = true; break;
|
||||||
|
case K_NO: sovrascrivi = false; break;
|
||||||
|
default: return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//se voglio sovrascrivere i file, e non l'ho mai cancellato, allora svuotalo effettivamente
|
||||||
|
const TString8 numdoc = doc.get(DOC_NDOC);
|
||||||
|
if (sovrascrivi && !deleted_docs.is_key(numdoc))
|
||||||
|
{
|
||||||
doc.destroy_rows();
|
doc.destroy_rows();
|
||||||
|
deleted_docs.add(numdoc, numdoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 1; i <= doc.rows(); i++)
|
for (int i = 1; i <= doc.rows(); i++)
|
||||||
{
|
{
|
||||||
|
//cerco se esiste già una riga sul documento selezionato per quell'articolo;
|
||||||
|
//se la trovo sommo la quantità appena letta a quella già esistente,
|
||||||
|
//altrimenti creo una nuova riga documento
|
||||||
TRiga_documento& rdoc = doc[i];
|
TRiga_documento& rdoc = doc[i];
|
||||||
if (rdoc.get(RDOC_CODART) == codart)
|
TString80 codart_doc = rdoc.get(RDOC_CODART);
|
||||||
|
codart_doc.trim();
|
||||||
|
|
||||||
|
if (codart_doc == codart.trim())
|
||||||
{
|
{
|
||||||
long qtardoc = rdoc.get_long(RDOC_QTA);
|
long qtardoc = rdoc.get_long(RDOC_QTAGG1);
|
||||||
qtardoc += qta;
|
qtardoc += qta;
|
||||||
rdoc.put(RDOC_QTA,qtardoc);
|
rdoc.put(RDOC_QTAGG1,qtardoc);
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -249,12 +264,20 @@ void TAcquisizione_lavanderie_app::elabora_file(const TString& file, bool new_fi
|
|||||||
|
|
||||||
if (found == false)
|
if (found == false)
|
||||||
{
|
{
|
||||||
TRiga_documento& rdoc = doc.new_row("01");
|
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
|
||||||
|
|
||||||
|
TRiga_documento& rdoc = doc.new_row("22");
|
||||||
rdoc.put(RDOC_CODART, codart);
|
rdoc.put(RDOC_CODART, codart);
|
||||||
rdoc.put(RDOC_QTA,qta);
|
rdoc.put(RDOC_DESCR, anamag.get(ANAMAG_DESCR));
|
||||||
|
rdoc.put(RDOC_CODARTMAG, codart);
|
||||||
|
rdoc.put(RDOC_CHECKED, 'X');
|
||||||
|
rdoc.put(RDOC_QTAGG1, qta);
|
||||||
|
rdoc.put(RDOC_QTA, rotti);
|
||||||
}
|
}
|
||||||
new_file = false;
|
new_file = false;
|
||||||
}
|
}
|
||||||
|
ca.destroy();
|
||||||
|
deleted_docs.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TRANSFER: metodo che scorre i campi nome e, se sono pieni, richiama il metodo
|
//TRANSFER: metodo che scorre i campi nome e, se sono pieni, richiama il metodo
|
||||||
|
Loading…
x
Reference in New Issue
Block a user