Patch level : nopatch

Files correlati     : vearea.men ve4.exe
Ricompilazione Demo : [ ]
Commento            :
Aggiunto programma aggiornamento codici IVA


git-svn-id: svn://10.65.10.50/branches/R_10_00@22416 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-09-13 15:10:16 +00:00
parent f23edc9ee7
commit c70d24c617
9 changed files with 344 additions and 69 deletions

View File

@ -9,12 +9,8 @@ int main(int argc, char** argv)
const int k = argc > 1 ? atoi(argv[1]+1) : 0;
switch(k)
{
case 0:
ve4100(argc, argv);
break;
default:
error_box("Applicazione sconosciuta: %s %s.", argv[0], argv[1]);
break;
case 1: ve4200(argc, argv); break; // Aggiorna IVA
default: ve4100(argc, argv); break; // Modifica Valori
}
return 0;
}

View File

@ -1 +1,2 @@
int ve4100(int argc, char* argv[]);
int ve4200(int argc, char* argv[]);

View File

@ -38,10 +38,10 @@ protected:
int name2index(const char* name) const;
public:
static void load_table(bool force = FALSE);
static void load_table(bool force = false);
static void set_relation(const TRelation* rel) { _rel = rel; load_table(); }
static void set_window(TViswin* win) { _win = win; }
static void reset_errors() { _errors = FALSE; }
static void reset_errors() { _errors = false; }
static bool errors_found() { return _errors; }
int str2file(const TString& s) const;
@ -55,7 +55,7 @@ public:
TArray TTable_expression::_expr;
const TRelation* TTable_expression::_rel = NULL;
TViswin* TTable_expression::_win = NULL;
bool TTable_expression::_errors = FALSE;
bool TTable_expression::_errors = false;
void TTable_expression::load_table(bool force)
{
@ -75,7 +75,7 @@ void TTable_expression::load_table(bool force)
const int index = _expr.add(o);
if (!te->set(e, t))
{
te->error_box("La funzione %s contiene un simbolo errato: %s",
te->error_box(FR("La funzione %s contiene un simbolo errato: %s"),
(const char*)n, te->last_token());
te->set("", t);
}
@ -98,7 +98,7 @@ bool TTable_expression::print_error(const char* msg) const
}
else
::error_box("%s", msg);
return _errors = TRUE;
return _errors = true;
}
bool TTable_expression::error_box(const char* fmt, ...) const
@ -144,7 +144,7 @@ TRectype* TTable_expression::field2rec(TString& var) const
if (logicnum >= 0 && get_relation().exist(logicnum))
rec = &get_relation().curr(logicnum);
else
error_box("Il campo '%s' non appartiene alla relazione.", (const char*)var);
error_box(FR("Il campo '%s' non appartiene alla relazione."), (const char*)var);
return rec;
}
@ -158,7 +158,7 @@ const char* TTable_expression::get_field(const char* f) const
if (rec->exist(var))
val = rec->get(var);
else
error_box("Il campo '%s' non appartiene al file %d.", (const char*)var, rec->num());
error_box(FR("Il campo '%s' non appartiene al file %d."), (const char*)var, rec->num());
}
return val;
}
@ -217,10 +217,10 @@ int TTable_expression::parse_user_func(const char* name, int nparms) const
switch(index)
{
case -1:
error_box("Funzione non riconosciuta: %s.", name);
error_box(FR("Funzione non riconosciuta: %s."), name);
break;
case -2:
error_box("La funzione %s contiene un simbolo errato: %s.",
error_box(FR("La funzione %s contiene un simbolo errato: %s."),
name, last_token());
break;
default:
@ -329,13 +329,13 @@ TRicalcolo_mask::TRicalcolo_mask()
set_handler(F_KEY, key_handler);
set_handler(F_FILTER, filter_handler);
TSheet_field& fields = (TSheet_field&)field(F_FIELDS);
TSheet_field& fields = sfield(F_FIELDS);
TMask& fsm = fields.sheet_mask();
fsm.set_handler(F_FIELD, field_handler);
fsm.set_handler(F_FROM, fromto_handler);
fsm.set_handler(F_TO, fromto_handler);
TSheet_field& outputs = (TSheet_field&)field(F_OUTPUTS);
TSheet_field& outputs = sfield(F_OUTPUTS);
TMask& osm = outputs.sheet_mask();
osm.set_handler(F_FIELD, field_handler);
osm.set_handler(F_FORMULA, formula_handler);
@ -537,7 +537,7 @@ TCursor& TRicalcolo_mask::create_cursor()
TToken_string& key_des = get_key_expr(key);
TSheet_field& fs = (TSheet_field&)field(F_FIELDS);
TSheet_field& fs = sfield(F_FIELDS);
TString16 field;
TString val;
@ -558,13 +558,13 @@ TCursor& TRicalcolo_mask::create_cursor()
start.put(field, val);
else
{
key_seq_from = FALSE;
key_seq_from = false;
if (filter.not_empty()) filter << "&&";
filter << '(' << field << ">=\"" << val << "\")";
}
}
else
key_seq_from = FALSE;
key_seq_from = false;
val = row.get(); // Limite superiore
if (!val.blank())
@ -573,16 +573,16 @@ TCursor& TRicalcolo_mask::create_cursor()
stop.put(field, val);
else
{
key_seq_to = FALSE;
key_seq_to = false;
if (filter.not_empty()) filter << "&&";
filter << '(' << field << "<=\"" << val << "\")";
}
}
else
key_seq_to = FALSE;
key_seq_to = false;
}
else
key_seq_from = key_seq_to = FALSE;
key_seq_from = key_seq_to = false;
}
if (key <= 0)
@ -611,11 +611,11 @@ bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k)
TToken_string values(80);
TString16 tmp;
codes.add(0);
values.add("Nessuna");
values.add(TR("Nessuna"));
for (int k = 1; k <= keys; k++)
{
codes.add(k);
tmp.format("Chiave %d", k);
tmp.format(FR("Chiave %d"), k);
values.add(tmp);
}
@ -623,7 +623,7 @@ bool TRicalcolo_mask::file_handler(TMask_field& f, KEY k)
lk.replace_items(codes, values);
}
}
return TRUE;
return true;
}
bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k)
@ -631,7 +631,7 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k)
if (k == K_SPACE)
{
TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask();
TSheet_field& sheet = (TSheet_field&)m.field(F_FIELDS);
TSheet_field& sheet = m.sfield(F_FIELDS);
if (m.is_running() || sheet.items() == 0)
{
const int cur_key = atoi(f.get());
@ -670,7 +670,7 @@ bool TRicalcolo_mask::key_handler(TMask_field& f, KEY k)
sheet.force_update();
}
}
return TRUE;
return true;
}
bool TRicalcolo_mask::test_formula(TMask_field& f) const
@ -702,7 +702,7 @@ bool TRicalcolo_mask::test_formula(TMask_field& f) const
}
}
else
ok = FALSE;
ok = false;
if (!ok)
{
f.error_box("Il campo '%s' non esiste!", (const char*)expr.varname(v));
@ -717,7 +717,7 @@ bool TRicalcolo_mask::test_formula(TMask_field& f) const
bool TRicalcolo_mask::filter_handler(TMask_field& f, KEY k)
{
bool ok = TRUE;
bool ok = true;
if (f.to_check(k))
{
TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask();
@ -728,7 +728,7 @@ bool TRicalcolo_mask::filter_handler(TMask_field& f, KEY k)
bool TRicalcolo_mask::field_handler(TMask_field& f, KEY k)
{
bool ok = TRUE;
bool ok = true;
switch (k)
{
case K_TAB:
@ -777,7 +777,7 @@ HIDDEN void swap_tokens(TToken_string& str, int p1, int p2)
bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
{
bool ok = TRUE;
bool ok = true;
if (f.to_check(k))
{
const TMask& m = f.mask();
@ -817,7 +817,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
fields.add(tmp);
int lun = rec.length(tmp);
bool right = FALSE;
bool right = false;
switch(rec.type(tmp))
{
case _alfafld:
@ -831,7 +831,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
lun = 10;
break;
default:
right = TRUE;
right = true;
break;
}
tmp.lower(); tmp[0] = toupper(tmp[0]);
@ -899,7 +899,7 @@ bool TRicalcolo_mask::fromto_handler(TMask_field& f, KEY k)
bool TRicalcolo_mask::formula_handler(TMask_field& f, KEY k)
{
bool ok = TRUE;
bool ok = true;
if (f.to_check(k))
{
TRicalcolo_mask& m = (TRicalcolo_mask&)f.mask().get_sheet()->mask();
@ -931,12 +931,12 @@ bool TRicalcolo_mask::elabora()
TString val(80); // Valore di campo
TString line(128); // Linea di testo
TIndwin iw(48, "Inizializzazione ...", TRUE, FALSE, 48);
TIndwin iw(48, "Inizializzazione ...", true, false, 48);
begin_wait();
TCursor& cur = create_cursor(); // Crea e filtra il cursore principale
TSheet_field& osf = (TSheet_field&)field(F_OUTPUTS);
TSheet_field& osf = sfield(F_OUTPUTS);
TArray expr;
for (int r = 0; r < osf.items(); r++)
{
@ -964,13 +964,13 @@ bool TRicalcolo_mask::elabora()
}
TToken_string& key_expr = get_key_expr(cur.key());
TViswin vw(NULL, "Ricalcolo valori", FALSE, TRUE, FALSE, 0, 0, 0, 0, FALSE);
TViswin vw(NULL, TR("Ricalcolo valori"), false, true, false, 0, 0, 0, 0, false);
iw.close_modal();
end_wait();
if (iw.iscancelled())
return FALSE;
return false;
TTable_expression::set_relation(cur.relation());
TTable_expression::set_window(&vw);
@ -979,7 +979,7 @@ bool TRicalcolo_mask::elabora()
vw.maximize();
vw.open_modal();
bool ok = TRUE;
bool ok = true;
const TRecnotype items = cur.items();
cur.freeze();
@ -1010,7 +1010,7 @@ bool TRicalcolo_mask::elabora()
val = e;
if (e.errors_found())
ok = FALSE;
ok = false;
else
cur.curr().put(var, val);
@ -1038,9 +1038,9 @@ bool TRicalcolo_mask::elabora()
{
TTextfile& txt = vw.text();
TProgind piw(txt.lines(), "Aggiornamento archivio", FALSE, TRUE, 48);
TProgind piw(txt.lines(), "Aggiornamento archivio", false, true, 48);
bool do_rewrite = FALSE;
bool do_rewrite = false;
long pos = 0;
cur = 0L;
for (long r = 0; r < txt.lines(); r++)
@ -1052,7 +1052,7 @@ bool TRicalcolo_mask::elabora()
if (do_rewrite)
{
rewrite_cursor(cur);
do_rewrite = FALSE;
do_rewrite = false;
}
cur = pos-1; // pos a video = 1 -> pos cursore = pos-1 = 0)
}
@ -1065,7 +1065,7 @@ bool TRicalcolo_mask::elabora()
{
val = equal+2;
cur.curr().put(var, val);
do_rewrite = TRUE;
do_rewrite = true;
}
}
}
@ -1074,9 +1074,9 @@ bool TRicalcolo_mask::elabora()
rewrite_cursor(cur);
}
}
cur.freeze(FALSE);
cur.freeze(false);
return TRUE;
return true;
}
@ -1093,7 +1093,7 @@ protected:
public:
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization() const
{return FALSE;}
{return false;}
TRicalcola_application() { }
virtual ~TRicalcola_application() { }
};
@ -1101,7 +1101,7 @@ public:
bool TRicalcola_application::create()
{
dispatch_e_menu(MENU_ITEM_ID(1));
return TRUE;
return true;
}
bool TRicalcola_application::menu(MENU_TAG)
@ -1112,7 +1112,7 @@ bool TRicalcola_application::menu(MENU_TAG)
m.elabora();
m.close();
return FALSE;
return false;
}
int ve4100(int argc, char* argv[])

185
ve/ve4200.cpp Normal file
View File

@ -0,0 +1,185 @@
#include <applicat.h>
#include <automask.h>
#include <dongle.h>
#include <lffiles.h>
#include <progind.h>
#include <recset.h>
#include <relation.h>
#include "ve4.h"
#include "ve4200a.h"
#include "condv.h"
#include "rcondv.h"
#include "doc.h"
#include "rdoc.h"
#include "../mg/anamag.h"
class TAggiornaIVA_msk : public TAutomask
{
private:
bool anteprima(TISAM_recordset& recset) const;
bool aggiorna(TISAM_recordset& recset) const;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
bool elabora(int logicnum) const;
TAggiornaIVA_msk() : TAutomask("ve4200a") {}
};
bool TAggiornaIVA_msk::anteprima(TISAM_recordset& recset) const
{
const TRecnotype tot = recset.items();
if (tot == 0)
return warning_box(TR("Non ci sono record da elaborare"));
TCursor* cur = recset.cursor();
TLocalisamfile& arc = cur->file();
const char *fields = RDOC_CODIVA;
const char* head = "IVA@4";
switch(arc.num())
{
case LF_RIGHEDOC:
fields = RDOC_ANNO"|"RDOC_CODNUM"|"RDOC_NDOC"|33->"DOC_DATADOC"|33->"DOC_STATO"|"RDOC_CODART"|"RDOC_CODIVA;
head = "Anno|Num.|Doc.@7|Data@10|Stato|Articolo@20|IVA@4";
break;
case LF_ANAMAG:
fields = ANAMAG_CODART"|"ANAMAG_DESCR"|"ANAMAG_CODIVA;
head = "Articolo@20|Descrizione@50|IVA@4";
break;
case LF_RCONDV:
fields = RCONDV_TIPO"|"RCONDV_CODCF"|"RCONDV_COD"|52->"CONDV_VALFIN"|"RCONDV_CODRIGA"|"RCONDV_CODIVA;
head = "Tipo|Cliente|Cod.|Data Fine@10|Articolo@20|IVA@4";
break;
default: break;
}
TCursor_sheet sheet(cur, fields, arc.description(), head, 0, 1);
return sheet.run() == K_ENTER;
}
bool TAggiornaIVA_msk::aggiorna(TISAM_recordset& recset) const
{
const TRecnotype tot = recset.items();
if (tot == 0 || !yesno_box(FR("Si conferma l'aggiornamento di %ld record?"), tot))
return false;
TLocalisamfile& arc = recset.cursor()->file();
TRectype& rec = arc.curr();
const TString& newiva = get(F_NEWCODIVA);
TProgind pi(tot, TR("Aggiornamento codice IVA"));
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
{
if (!pi.addstatus(1))
return false;
rec.put("CODIVA", newiva);
if (arc.rewrite() != NOERR)
return cantwrite_box(arc.name());
}
return true;
}
bool TAggiornaIVA_msk::elabora(int logicnum) const
{
const TString& oldiva = get(F_OLDCODIVA);
const TDate dal = get(F_DAL);
const TDate al(31,12,dal.year());
const TString& codnum = get(F_CODNUM);
const TString& stato = get(F_STATO);
TString query;
query << "USE " << logicnum << " SELECT (CODIVA==\"" << oldiva << "\")";
switch (logicnum)
{
case LF_RIGHEDOC:
{
query << "&&(BETWEEN(33->DATADOC," << dal.date2ansi() << "," << al.date2ansi() << "))"
<< "&&(33->STATO==\"" << stato << "\")";
query << "\nJOIN DOC INTO PROVV=PROVV ANNO=ANNO CODNUM==CODNUM NDOC==NDOC";
TString range;
range << "PROVV=D ANNO=" << dal.year() << " CODNUM=" << codnum;
query << "\nFROM " << range << "\nTO " << range;
}
break;
case LF_RCONDV:
{
query << "&&(STR((ANSI(52->VALFIN)==0)||(ANSI(52->VALFIN)>=" << dal.date2ansi() <<")))";
query << "\nJOIN CONDV INTO TIPO=TIPO CATVEN==CATVEN TIPOCF=TIPOCF CODCF==CODCF COD==COD";
}
break;
default:
break;
}
TISAM_recordset recset(query);
if (!anteprima(recset))
return false;
return aggiorna(recset);
}
bool TAggiornaIVA_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
return true;
}
class TAggiornaIVA_app : public TSkeleton_application
{
protected:
virtual bool create();
virtual void main_loop();
};
bool TAggiornaIVA_app::create()
{
Tdninst dninst;
bool good = dninst.find_serno();
if (good)
{
TString msg;
good = dninst.test_cmdline("MustCall", false, msg) == 0;
}
if (!good)
return error_box(FR("Chiave %d non abilitata all'utilizzo di questa procedura"), dongle().number());
return TSkeleton_application::create();
}
void TAggiornaIVA_app::main_loop()
{
TAggiornaIVA_msk m;
while (m.run() == K_ENTER)
{
const int file = m.get_int(F_FILE);
switch (file)
{
case LF_DOC:
case LF_RIGHEDOC:
m.elabora(LF_RIGHEDOC);
break;
case LF_ANAMAG:
m.elabora(LF_ANAMAG);
break;
case LF_CONDV:
case LF_RCONDV:
m.elabora(LF_RCONDV);
break;
default: break;
}
}
}
int ve4200(int argc, char* argv[])
{
TAggiornaIVA_app r;
r.run(argc, argv, TR("Aggiornamento codici IVA"));
return 0;
}

7
ve/ve4200a.h Normal file
View File

@ -0,0 +1,7 @@
#define F_FILE 101
#define F_DAL 102
#define F_CODNUM 103
#define F_STATO 104
#define F_OLDCODIVA 111
#define F_NEWCODIVA 112

95
ve/ve4200a.uml Normal file
View File

@ -0,0 +1,95 @@
#include "ve4200a.h"
PAGE "Aggiornamento codice IVA" -1 -1 37 13
RADIOBUTTON F_FILE 2 34
BEGIN
PROMPT 1 0 "@bArchivio da elaborare"
ITEM "47|Anagrafica di magazzino"
ITEM "53|Condizioni di vendita"
ITEM "33|Documenti"
END
GROUPBOX DLG_NULL 34 5
BEGIN
PROMPT 1 5 "@bParametri di selezione"
END
DATE F_DAL
BEGIN
PROMPT 2 6 "Data iniziale "
CHEKCTYPE REQUIRED
FLAGS "A"
END
STRING F_CODNUM 4
BEGIN
PROMPT 2 7 "Numerazione "
FLAGS "U"
USE %NUM
INPUT CODTAB F_CODNUM
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_CODNUM CODTAB
CHECKTYPE REQUIRED
END
STRING F_STATO 1
BEGIN
PROMPT 2 8 "Stato "
FLAGS "U"
USE %STD
INPUT CODTAB F_STATO
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_STATO CODTAB
CHECKTYPE REQUIRED
END
GROUPBOX DLG_NULL 34 4
BEGIN
PROMPT 1 10 "@bParametri di elaborazione"
END
STRING F_OLDCODIVA 4
BEGIN
PROMPT 2 11 "Vecchio codice IVA "
FLAGS "U"
USE %IVA
INPUT CODTAB F_OLDCODIVA
DISPLAY "Codice" CODTAB
DISPLAY "Descrizione@60" S0
OUTPUT F_OLDCODIVA CODTAB
CHECKTYPE REQUIRED
END
STRING F_NEWCODIVA 4
BEGIN
PROMPT 2 12 "Nuovo codice IVA "
FLAGS "U"
COPY USE F_OLDCODIVA
INPUT CODTAB F_NEWCODIVA
COPY DISPLAY F_OLDCODIVA
OUTPUT F_NEWCODIVA CODTAB
CHECKTYPE REQUIRED
STR_EXPR #F_NECODIVA!=#F_OLDCODIVA
WARNING "Inserire un codice diverso dal precedente"
END
STRING DLG_PROFILE 256 24
BEGIN
PROMPT 1 -1 "Profilo "
PSELECT
FLAGS "H"
END
ENDPAGE
TOOLBAR "" 0 0 0 2
#include <elabar.h>
ENDPAGE
ENDMASK

View File

@ -5,13 +5,11 @@
int main( int argc, char** argv )
{
const int r = (argc > 1) ? argv[1][1]-'0' : -1;
switch (r)
{
case 0:
default:
ve8100(argc, argv); break; // lista ritenute fiscali
}
exit(0);
return 0;
}

View File

@ -2,21 +2,16 @@
#include <automask.h>
#include <execp.h>
#include <progind.h>
#include <recset.h>
#include <relation.h>
#include <reprint.h>
#include <tabutil.h>
#include "../cg/cg2103.h"
#include "../gv/gvlib.h"
#include "velib.h"
#include "velib07.h"
#include <nditte.h>
#include "ve8.h"
#include "ve8100a.h"
#include "../gv/gvlib.h"
#include <nditte.h>
////////////////////////////////////////////////////////
// MASCHERA
////////////////////////////////////////////////////////
@ -131,23 +126,19 @@ void TListaRitFisc::main_loop()
break;
case K_ENTER:
{
//report e book dei report
TDocument_report rep;
rep.load("ve8100a");
TRecordset * r = rep.recordset();
if (r != NULL)
{
TVariant var;
var = m.get(F_NUMINI);
TVariant var = m.get(F_NUMINI);
r->set_var("#DANUM", var);
var = m.get(F_NUMFIN);
r->set_var("#ANUM", var);
var = m.get(F_CODNUM);
r->set_var("#NUM", var);
}
TReport_book book;
book.add(rep);
book.print_or_preview(); //stampa il book dei report
rep.print_or_preview(); //stampa il book dei report
}
}
}

View File

@ -220,8 +220,10 @@ Picture = <ve00>
Module = 0
Flags = ""
Item_01 = "Modifica valori", "ve4 -0", "F"
Item_02 = "Invio", [ACQVEN_025]
Item_03 = "Ricezione", [ACQVEN_026]
Item_02 = "Aggiornamento Codici IVA", "ve4 -1", "FP"
Item_03 = "Invio", [ACQVEN_025]
Item_04 = "Ricezione", [ACQVEN_026]
[ACQVEN_022]
Caption = "Configurazione magazzino"