Patch level : 12.0 294
Files correlati : Commento : Aggiunto modulo per la eliminazione dei documenti git-svn-id: svn://10.65.10.50/branches/R_10_00@23313 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
406142c380
commit
50c4054da3
@ -153,6 +153,7 @@
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\ve\ve61000.cpp" />
|
||||
<ClCompile Include="..\src\ve\ve6200.cpp">
|
||||
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -199,6 +200,7 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MskCompiler Include="..\src\ve\ve61000a.uml" />
|
||||
<MskCompiler Include="..\src\ve\ve6100a.uml" />
|
||||
<MskCompiler Include="..\src\ve\ve6200a.uml" />
|
||||
<MskCompiler Include="..\src\ve\ve6300a.uml" />
|
||||
@ -210,6 +212,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\ve\ve6.h" />
|
||||
<ClInclude Include="..\src\ve\ve61000a.h" />
|
||||
<ClInclude Include="..\src\ve\ve6100a.h" />
|
||||
<ClInclude Include="..\src\ve\ve6200a.h" />
|
||||
<ClInclude Include="..\src\ve\ve6300a.h" />
|
||||
|
@ -55,6 +55,9 @@
|
||||
<ClCompile Include="..\src\ve\ve6900.cpp">
|
||||
<Filter>Sources</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\src\ve\ve61000.cpp">
|
||||
<Filter>Sources</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<MskCompiler Include="..\src\ve\ve6100a.uml">
|
||||
@ -81,6 +84,9 @@
|
||||
<MskCompiler Include="..\src\ve\ve6900a.uml">
|
||||
<Filter>Masks</Filter>
|
||||
</MskCompiler>
|
||||
<MskCompiler Include="..\src\ve\ve61000a.uml">
|
||||
<Filter>Masks</Filter>
|
||||
</MskCompiler>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\src\ve\ve6.h">
|
||||
@ -116,6 +122,9 @@
|
||||
<ClInclude Include="..\src\ve\ve6900a.h">
|
||||
<Filter>Headers</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\ve\ve61000a.h">
|
||||
<Filter>Headers</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<IniCompiler Include="..\src\ve\opticpen.ini">
|
||||
|
@ -4,19 +4,25 @@
|
||||
|
||||
int main( int argc, char** argv )
|
||||
{
|
||||
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
|
||||
//int r = (argc > 1) ? argv[1][1]-'0' : -1;
|
||||
/*
|
||||
if(argv[1][2] > 0)
|
||||
r = r * 10 + argv[1][2]-'0';
|
||||
*/
|
||||
int r = (argc > 1) ? atoi(++argv[1]) : -1;
|
||||
|
||||
switch (r)
|
||||
{
|
||||
case 2: ve6200(argc, argv); break; // fatturazione bolle
|
||||
case 3: ve6300(argc, argv); break; // generazione effetti
|
||||
case 4: ve6400(argc, argv); break; // generazione scontrini
|
||||
case 5: ve6500(argc, argv); break; // generazione righe da penna ottica
|
||||
case 6: ve6600(argc, argv); break; // collegamento contabilità industriosa
|
||||
case 7: ve6700(argc, argv); break; // copia documenti interattiva da ditta a ditta
|
||||
case 8: ve6800(argc, argv); break; // contabilizzazione analitica documenti
|
||||
case 9: ve6900(argc, argv); break; // controllo ordini evasi
|
||||
default: ve6100(argc, argv); break; // contabilizzazione documenti
|
||||
case 2: ve6200(argc, argv); break; // fatturazione bolle
|
||||
case 3: ve6300(argc, argv); break; // generazione effetti
|
||||
case 4: ve6400(argc, argv); break; // generazione scontrini
|
||||
case 5: ve6500(argc, argv); break; // generazione righe da penna ottica
|
||||
case 6: ve6600(argc, argv); break; // collegamento contabilità industriosa
|
||||
case 7: ve6700(argc, argv); break; // copia documenti interattiva da ditta a ditta
|
||||
case 8: ve6800(argc, argv); break; // contabilizzazione analitica documenti
|
||||
case 9: ve6900(argc, argv); break; // controllo ordini evasi
|
||||
case 10: ve61000(argc, argv); break; // Eliminazione documenti
|
||||
default: ve6100(argc, argv); break; // contabilizzazione documenti
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -10,5 +10,6 @@ int ve6600 (int, char**);
|
||||
int ve6700 (int, char**);
|
||||
int ve6800 (int, char**);
|
||||
int ve6900 (int, char**);
|
||||
int ve61000 (int, char**);
|
||||
|
||||
#endif
|
||||
|
162
src/ve/ve61000.cpp
Normal file
162
src/ve/ve61000.cpp
Normal file
@ -0,0 +1,162 @@
|
||||
/**************************************************
|
||||
* File: ve61000.cpp *
|
||||
* Programma per il controllo degli ordini evasi *
|
||||
* Authors: Alessandro Bonazzi, Mattia Tollari *
|
||||
**************************************************/
|
||||
|
||||
#include <automask.h>
|
||||
#include <progind.h>
|
||||
#include <relation.h>
|
||||
#include <sheet.h>
|
||||
#include <tabutil.h>
|
||||
#include <defmask.h>
|
||||
|
||||
#include "velib04.h"
|
||||
#include "../cg/cgsaldac.h"
|
||||
|
||||
#include "ve61000a.h"
|
||||
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// MASCHERA //
|
||||
///////////////////////////////////////////////
|
||||
class TEliminazione_documenti_mask : public TAutomask
|
||||
{
|
||||
TString_array _tipi_doc; // Array di stringhe contenente i tipi documenti da elaborare
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
// Controlla se lo stato ed il tipo del documento sono validi e rispettano la selezione
|
||||
bool doc_tipo_stato_ok(const TRectype& doc);
|
||||
// Constructor and Distructor
|
||||
TEliminazione_documenti_mask(): TAutomask("ve61000a") {}
|
||||
~TEliminazione_documenti_mask() {}
|
||||
};
|
||||
|
||||
bool TEliminazione_documenti_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case DLG_USER:
|
||||
if (e == fe_button)
|
||||
{
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TEliminazione_documenti_mask::doc_tipo_stato_ok(const TRectype& doc)
|
||||
// Verifica che il tipo documento corrente esista tra i tipi previsti dalla elaborazione
|
||||
// differita selezionata
|
||||
{
|
||||
bool found = false;
|
||||
const TString4 tipo = doc.get(DOC_TIPODOC);
|
||||
const char stato = doc.get_char(DOC_STATO);
|
||||
const int items = _tipi_doc.items();
|
||||
for (int i = 0; i < items && !found; i++)
|
||||
{
|
||||
TToken_string& t = _tipi_doc.row(i);
|
||||
const TString4 tipox(t.get(0));
|
||||
const char statox = t.get(1)[0];
|
||||
if (tipo == tipox && stato == statox)
|
||||
found = true;
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// APPLICAZIONE //
|
||||
/////////////////////////////////////////////
|
||||
|
||||
// TEliminazione_documenti
|
||||
// Applicazione per il controllo degli ordini evasi
|
||||
class TEliminazione_documenti_app : public TSkeleton_application
|
||||
{
|
||||
TEliminazione_documenti_mask* _msk;
|
||||
|
||||
protected: // TApplication
|
||||
// Controlla gli ordini
|
||||
void check();
|
||||
void fastCheck();
|
||||
|
||||
public:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
|
||||
void TEliminazione_documenti_app::check()
|
||||
{
|
||||
// Creo la relazione alla tabella del Db
|
||||
TRelation rel(LF_DOC);
|
||||
// Definisco i due TRecType di inizio e fine per lo scorrimento
|
||||
TRectype recini(rel.curr());
|
||||
TRectype recfin(rel.curr());
|
||||
// Imposto il cursore
|
||||
rel.lfile().set_curr(new TDocumento);
|
||||
// Aggiungo dei filtri, in questo caso utilizzando la KEY 1 ho bisogno di
|
||||
// PROVV+ANNO
|
||||
// Inizio
|
||||
recini.put(DOC_PROVV, _msk->get(F_PROVV));
|
||||
recini.put(DOC_ANNO, _msk->get(F_DA_ANNO));
|
||||
// Fine
|
||||
recfin.put(DOC_PROVV, _msk->get(F_PROVV));
|
||||
recfin.put(DOC_ANNO, _msk->get(F_A_ANNO));
|
||||
// Istanzio il cursore
|
||||
TCursor cur(&rel, "", 1, &recini, &recfin);
|
||||
const long total = cur.items();
|
||||
// Se esistono righe
|
||||
if (total > 0)
|
||||
{
|
||||
TString msg = TR("Confermare l'eliminazione di ");
|
||||
msg.add_plural(total, TR("documento"));
|
||||
if (yesno_box(msg))
|
||||
{
|
||||
TProgress_monitor pi(total, title());
|
||||
// Blocco il cursore per garantire l'integrità dei dati
|
||||
cur.freeze();
|
||||
for (cur = 0; cur.pos() < total; ++cur)
|
||||
{
|
||||
if (!pi.add_status())
|
||||
break;
|
||||
TDocumento& doc = (TDocumento&) cur.curr();
|
||||
// Imposto il documento allo stato eliminabile
|
||||
doc.put(DOC_STATO, 9);
|
||||
doc.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TEliminazione_documenti_app::create()
|
||||
{
|
||||
open_files(LF_TABCOM, LF_TAB, LF_DOC, LF_RIGHEDOC, LF_MOVANA, LF_RMOVANA, 0);
|
||||
_msk = new TEliminazione_documenti_mask();
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
|
||||
bool TEliminazione_documenti_app::destroy()
|
||||
{
|
||||
if (_msk) delete _msk;
|
||||
return TSkeleton_application::destroy();
|
||||
}
|
||||
|
||||
void TEliminazione_documenti_app::main_loop()
|
||||
{
|
||||
while (_msk->run() == K_ENTER)
|
||||
check();
|
||||
}
|
||||
|
||||
int ve61000 (int argc, char **argv)
|
||||
{
|
||||
TEliminazione_documenti_app a;
|
||||
a.run(argc,argv, TR("Elimiazione documenti"));
|
||||
return true;
|
||||
}
|
6
src/ve/ve61000a.h
Normal file
6
src/ve/ve61000a.h
Normal file
@ -0,0 +1,6 @@
|
||||
// Include file per ve61000a.uml
|
||||
|
||||
#define F_PROVV 101
|
||||
#define F_DA_ANNO 102
|
||||
#define F_A_ANNO 103
|
||||
|
42
src/ve/ve61000a.uml
Normal file
42
src/ve/ve61000a.uml
Normal file
@ -0,0 +1,42 @@
|
||||
#include "ve61000a.h"
|
||||
|
||||
PAGE "Eliminazione documenti" -1 -1 50 5
|
||||
|
||||
LISTBOX F_PROVV 11
|
||||
BEGIN
|
||||
FIELD PROVV
|
||||
PROMPT 2 1 "Tipo "
|
||||
ITEM "D|Definitiva "
|
||||
ITEM "P|Provvisoria"
|
||||
FLAGS "P"
|
||||
END
|
||||
|
||||
NUMBER F_DA_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Da anno "
|
||||
FIELD ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
NUM_EXPR #F_DA_ANNO>0
|
||||
FLAG "AP"
|
||||
WARNING "Inserire un anno valido"
|
||||
END
|
||||
|
||||
NUMBER F_A_ANNO 4
|
||||
BEGIN
|
||||
PROMPT 25 3 "A anno "
|
||||
FIELD ANNO
|
||||
CHECKTYPE REQUIRED
|
||||
NUM_EXPR #F_A_ANNO>=#F_DA_ANNO
|
||||
FLAG "AP"
|
||||
WARNING "Inserire un anno valido"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
|
||||
#include <elabar.h>
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user