Patch level :2.2 224

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :risolto problema dei prefissi mancanti sui conti analitici nella stampa del rendiconto (errore segnalato da roberto nei dati ruffo). Aggiunta primissima stesura della stampa pagato (assolutamente non funzionante! Appare solo la maschera)


git-svn-id: svn://10.65.10.50/trunk@13501 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2005-11-17 16:40:54 +00:00
parent 58a4e125cb
commit bee78e6470
9 changed files with 1318 additions and 17 deletions

View File

@ -11,7 +11,7 @@ int main(int argc, char** argv)
case 2: ca3300(argc, argv); break; // stampa bilancio
//case 3: ca3400(argc, argv); break; // stampa conti per CdC/Commessa/Fase
//case 4: ca3500(argc, argv); break; // stampa scheda CdC/Commessa/Fase
//case 5: ca3600(argc, argv); break; // stampa pagato per CdC/Commessa/Fase
case 5: ca3600(argc, argv); break; // stampa pagato per CdC/Commessa/Fase
case 6: ca3700(argc, argv); break; //stampa rendiconto
case 8: ca3900(argc, argv); break; // generazione movimenti perfetti ma casuali
default: ca3100(argc, argv); break; // stampa movimenti

View File

@ -6,7 +6,7 @@ int ca3200(int argc, char* argv[]);
int ca3300(int argc, char* argv[]);
//int ca3400(int argc, char* argv[]);
//int ca3500(int argc, char* argv[]);
//int ca3600(int argc, char* argv[]);
int ca3600(int argc, char* argv[]);
int ca3700(int argc, char* argv[]);
int ca3900(int argc, char* argv[]);

507
ca/ca3600.cpp Executable file
View File

@ -0,0 +1,507 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <execp.h>
#include <progind.h>
#include <reprint.h>
#include <mov.h>
#include <partite.h>
#include <rmov.h>
#include <rmoviva.h>
#include "..\cg\cgsaldac.h"
#include "..\cg\cg2103.h"
#include "..\ve\velib.h"
#include "panapdc.h"
#include "pconana.h"
#include "movana.h"
#include "rmovana.h"
#include "ca3.h"
#include "ca3600.h"
#include "ca3601.h"
#include "calib01.h"
#include "calib02.h"
//===============================================================================================
////////////////////////////////////////////////////////
// MASCHERA DI CONFIGURAZIONE
////////////////////////////////////////////////////////
class TPag_per_cms_configmask: public TAutomask
{
public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void config_loader(TSheet_field& sf, const char* paragrafo);
void config_setter(TSheet_field& sf, const char* paragrafo);
TPag_per_cms_configmask():TAutomask("ca3601")
{
config_loader(sfield(F_COSTI), "Costi");
config_loader(sfield(F_PAGAMENTI), "Pagamenti");
config_loader(sfield(F_RITFIS), "Fiscali");
config_loader(sfield(F_RITSOC), "Sociali");
}
};
bool TPag_per_cms_configmask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_SAVEREC:
{
config_setter(sfield(F_COSTI), "Costi");
config_setter(sfield(F_PAGAMENTI), "Pagamenti");
config_setter(sfield(F_RITFIS), "Fiscali");
config_setter(sfield(F_RITSOC), "Sociali");
}
break;
default:
break;
}
return true;
}
void TPag_per_cms_configmask::config_loader(TSheet_field& sf, const char* paragrafo)
{
TConfig config("ca3600.ini", paragrafo);
TString_array conti;
int n = config.list_variables(conti, true, paragrafo, true);
FOR_EACH_ARRAY_ROW(conti, i, row)
{
TToken_string conto(row->get(1), '.'); //prende il valore della riga
TBill uncle(conto, 0);
uncle.add_to(sf.row(i), 0, 0x2);
}
}
void TPag_per_cms_configmask::config_setter(TSheet_field& sf, const char* paragrafo)
{
TConfig config("ca3600.ini", paragrafo);
config.remove_all(); //svuota il paragrafo sul .ini prima di ricompilarlo (se non si facesse
//non si riuscirebbero ad ammazzare le righe sul .ini
FOR_EACH_SHEET_ROW (sf, i, row)
{
TToken_string conto("", '.');
conto.add(row->get(0));
conto.add(row->get(1));
conto.add(row->get(2));
config.set("conto", conto, NULL, true, i);
}
}
//===============================================================================================
////////////////////////////////////////////////////////
// MASCHERA PRINCIPALE
////////////////////////////////////////////////////////
class TPag_per_cms_mask: public TAnal_report_mask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
const TString& get_report_class() const;
bool test_compatible_report();
bool esistono_riclassificazioni() const;
public:
TPag_per_cms_mask();
virtual ~TPag_per_cms_mask() {}
};
const TString& TPag_per_cms_mask::get_report_class() const
{
TString& classe = get_tmp_string();
classe = "ca3600a";
return classe;
}
bool TPag_per_cms_mask::test_compatible_report()
{
const TString& cls = get_report_class();
const TString& name = get(F_REPORT);
bool ok = name.not_empty();
if (ok)
{
TReport rep;
ok = rep.load(name);
if (ok)
{
const TString& classe = rep.get_class();
ok = classe == cls;
}
}
if (!ok)
{
set(F_REPORT, cls);
TFilename path = cls;
path.ext("rep");
ok = path.custom_path();
}
return ok;
}
bool TPag_per_cms_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case DLG_CONFIG:
if (e == fe_button)
{
TPag_per_cms_configmask configmask; //lancia la maschera di configurazione
configmask.run();
}
break;
case F_REPORT:
if (e == fe_button)
{
const TString8 lib = get_report_class();
TFilename path = o.get();
if (select_custom_file(path, "rep", lib))
{
path = path.name();
path.ext("");
o.set(path);
}
} else
if (e == fe_close)
{
if (!test_compatible_report())
return error_box(TR("Impossibile trovare un report compatibile"));
}
break;
case F_PRE1:
case F_PRE2:
case F_PRE3:
if ((e == fe_init || e == fe_modify) && o.active())
{
const int k = o.dlg()-F_PRE1;
set(F_PAN1_INI + k, o.get(), 0x2);
disable(F_PAN1_INI + k);
disable(F_PANDES1_INI + k);
set(F_PAN1_FIN + k, o.get(), 0x2);
disable(F_PAN1_FIN + k);
disable(F_PANDES1_FIN + k);
}
break;
default:
break;
}
return TAnal_report_mask::on_field_event(o, e, jolly);
}
bool TPag_per_cms_mask::esistono_riclassificazioni() const
{
TLocalisamfile ric(LF_PANAPDC);
return ric.first() == NOERR;
}
TPag_per_cms_mask::TPag_per_cms_mask()
:TAnal_report_mask("ca3600")
{
TConfig& cfg = ca_config();
const bool use_pdcc = cfg.get_bool("UsePdcc");
const TMultilevel_code_info& pconana_info = ca_multilevel_code_info(LF_PCONANA);
const int pconana_levels = pconana_info.levels();
int pconana_prefix = cfg.get_int("PdcPrefix");
if (pconana_prefix >= pconana_levels)
pconana_prefix = pconana_levels-1;
disable(F_PIANO);
set(F_PIANO, use_pdcc ? "C" : "A");
// Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile
const int pref = cfg.get_int("PdcPrefix");
if (use_pdcc && pref > 0)
{
const TMultilevel_code_info& info = ca_multilevel_code_info(LF_PCONANA);
const int levels = info.levels();
if (levels >= 2 && pref < levels && esistono_riclassificazioni())
{
enable(F_PIANO);
ca_create_fields(*this, 1, LF_PCONANA, 2, 4, F_PRE1, F_PREDES1, 0x0, PCONANA_CODCONTO);
// Nascondi i campi che non fanno parte del prefisso
for (int i = 0; i < levels; i++)
{
if (i < pref)
{
field(F_PRE1 + i).check_type(CHECK_REQUIRED);
field(F_PRE1 + i).set_group(6);
field(F_PREDES1 + i).set_group(6);
}
else
{
field(F_PRE1 + i).hide();
field(F_PREDES1 + i).hide();
}
}
}
}
for (int g = 5; g <= 6; g++)
{
const int logicnum = g == 5 ? LF_PCON : LF_PCONANA;
const short da_dlg = g == 5 ? F_PDC1_INI : F_PAN1_INI;
const short da_des = g == 5 ? F_PDCDES1_INI : F_PANDES1_INI;
const short a_dlg = g == 5 ? F_PDC1_FIN : F_PAN1_FIN;
const short a_des = g == 5 ? F_PDCDES1_FIN : F_PANDES1_FIN;
const int nfields = ca_create_fields(*this, 1, logicnum, 2, 10, da_dlg, da_des, 0x0, PCONANA_CODCONTO);
ca_create_fields(*this, 1, logicnum, 2, 16, a_dlg, a_des, 0x0, PCONANA_CODCONTO);
for (int i = 0; i < nfields; i++)
{
TMask_field& daconto = field(da_dlg + i);
daconto.set_group(1);
daconto.set_group(4);
daconto.set_group(g);
daconto.check_type(CHECK_SEARCH);
field(da_des+i).set_group(4);
field(da_des+i).set_group(g);
TMask_field& aconto = field(a_dlg + i);
aconto.set_group(2);
aconto.set_group(4);
aconto.set_group(g);
aconto.check_type(CHECK_SEARCH);
field(a_des+i).set_group(4);
field(a_des+i).set_group(g);
}
}
}
///////////////////////////////////////////////////////////////
// RECORDSET
///////////////////////////////////////////////////////////////
class TPag_per_cms_recordset : public TISAM_recordset
{
TExternisamfile* _tmp;
bool _riclassificato;
// TString _prefix, _da_conto_riclas, _a_conto_riclas;
protected:
// int _anno;
// int _tipoconti;
// TDate _dadata, _adata;
// long _danumreg, _anumreg;
TString _daconto, _aconto, _codcosto, _codcms, _codfas;
protected: //da libreria
// virtual const TVariant& get(const char* column_name) const;
protected:
void crea_trr(const TFilename& trr) const;
public:
virtual void set_filter(const TPag_per_cms_mask& msk, int cms_row);
TPag_per_cms_recordset(const TString& sql) : TISAM_recordset(sql), _riclassificato(false) { _tmp = NULL;}
~TPag_per_cms_recordset();
};
static TPag_per_cms_recordset* myself = NULL;
TPag_per_cms_recordset::~TPag_per_cms_recordset()
{ }
void TPag_per_cms_recordset::crea_trr(const TFilename& trr) const
{
ofstream of(trr);
of << 1000 << endl;
of << 14 << endl;
of << "NREG|3|7|0|Numero registrazione" << endl;
of << "DATAPAG|5|8|0|Data pagamento" << endl;
of << "DESCRPAG|1|50|0|Descrizione pagamento" << endl;
of << "CONTO|1|20|0|Conto analitico/contabile" << endl;
of << "DESCONTO|1|50|0|Descrizione conto" << endl;
of << "NDOC|1|6|0|Numero documento" << endl;
of << "DATADOC|5|8|0|Data documento" << endl;
of << "PROT|2|5|0|Protocollo iva" << endl;
of << "TOTDOC|4|18|5|Totale documento" << endl;
of << "TOTPAG|4|18|5|Totale pagamento" << endl;
of << "TOTRES|4|18|5|Totale residuo" << endl;
of << "CODFORN|3|7|0|Codice fornitore" << endl;
of << "DESFORN|1|50|0|Descrizione fornitore" << endl;
of << "HIDDEN|8|1|0|Record nascosto" << endl;
of << 1 << endl;
of << "NREG+DATAPAG" << endl;
}
void TPag_per_cms_recordset::set_filter(const TPag_per_cms_mask& msk, int cms_row)
{
//se esiste il file temporano con tracciato persomalizzato lo cancella e lo ricrea vuoto
TFilename trr; //file tracciato record
trr.tempdir();
trr.add("paid");
TFilename dbf(trr); //file dati
trr.ext("trr");
dbf.ext("dbf");
//crea il file .trr in base ai parametri del metodo
crea_trr(trr);
//svuota la memoria dal vecchio file temporaneo
if (_tmp != NULL)
delete _tmp;
//crea in memoria il nuovo file temporaneo e lo azzera (non si sa mai..)
_tmp = new TExternisamfile(dbf, trr);
_tmp->zap();
//prende un po' di dati dalla maschera
_daconto, _aconto, _codcosto = _codcms = _codfas = "";
if (cms_row >= 0)
{
TSheet_field& sf = msk.sfield(F_RIGHE);
TMask& sm = sf.sheet_mask();
sf.update_mask(cms_row);
TRelation rel(LF_RMOVANA);
sm.autosave(rel);
_codcosto = rel.curr().get(RMOVANA_CODCCOSTO);
_codcms = rel.curr().get(RMOVANA_CODCMS);
_codfas = rel.curr().get(RMOVANA_CODFASE);
}
for (int i = 0; msk.id2pos(F_CDC1_INI+i) > 0; i++)
{
_daconto << msk.get(F_CDC1_INI+i);
_aconto << msk.get(F_CDC1_FIN+i);
}
}
////////////////////////////////////////////////////////
// REPORT
////////////////////////////////////////////////////////
class TPag_per_cms_rep : public TAnal_report
{
protected:
virtual bool set_recordset(const TString& sql);
virtual bool get_usr_val(const TString& name, TVariant& var) const;
public:
void set_filter(const TPag_per_cms_mask& msk, int cms_row);
};
bool TPag_per_cms_rep::get_usr_val(const TString& name, TVariant& var) const
{
return TAnal_report::get_usr_val(name, var);
}
bool TPag_per_cms_rep::set_recordset(const TString& sql)
{
TPag_per_cms_recordset* rs = new TPag_per_cms_recordset(sql);
return TAnal_report::set_recordset(rs);
}
void TPag_per_cms_rep::set_filter(const TPag_per_cms_mask& msk, int cms_row)
{
TAnal_report::set_recordset(NULL);
const char* query ="USE 1000"; //\nJOIN MOVANA INTO NUMREG==NUMRD\nJOIN RMOVANA INTO NUMREG==NUMRD NUMRIG==NRIGA";
TPag_per_cms_recordset* recset = new TPag_per_cms_recordset(query);
recset->set_filter(msk, cms_row);
TAnal_report::set_recordset(recset);
}
//===============================================================================================
////////////////////////////////////////////////////////
// APPLICAZIONE
////////////////////////////////////////////////////////
class TPag_per_cms : public TSkeleton_application
{
public:
const TMultilevel_code_info& get_level_one() const;
virtual void main_loop();
};
//metodo per accattarsi o' primo livello della configurazione CA
const TMultilevel_code_info& TPag_per_cms::get_level_one() const
{
TConfig& cfg = ca_config();
const TString& first_lev = cfg.get("Level(1)");
const int logic = first_lev == "CDC" ? LF_CDC : LF_COMMESSE;
return ca_multilevel_code_info(logic);
}
void TPag_per_cms::main_loop()
{
TPag_per_cms_mask mask;
while (mask.run() == K_ENTER)
{
//report e book dei report
TReport_book book;
TString path = mask.get(F_REPORT);
if (path.empty())
path = "ca3600a";
TPag_per_cms_rep rep;
rep.load(path);
TSheet_field& sheet = mask.sfield(F_RIGHE);
TString video_string; //stringa che compare nella progind
if (sheet.empty()) //se non ci sono righe sullo sheet (selezione su tutte le cms/cdc)...
{
TToken_string& row = sheet.row(-1); //crea la prima riga dello sheet
const TMultilevel_code_info& liv1 = get_level_one(); //stabilisce quale è il primo livello (tra CDC e CMS)..
TISAM_recordset set(liv1.logic() == LF_CDC ? "USE CDC" : "USE COMMESSE"); //..e di conseguenza scrive la use giusta
TProgind pi(set.items(), video_string, true, true);
for (int i = 0; set.move_to(i); i++) //fighissimo metodo per scandire un file in 1 riga!
{
pi.addstatus(1);
if (pi.iscancelled())
break;
row = set.get((unsigned int)0).as_string(); //prende il valore del primo campo del file (CDC o CMS code)
video_string = TR("Scansione");
video_string << " " << row; //completa la stringa da visualizzare sulla progind
pi.set_text(video_string);
for (int l = liv1.levels()-2; l >= 0; l--) //se la struttura è a più livelli costruisce la tokenstring
row.insert("|", liv1.total_len(l));
rep.set_filter(mask, 0); //fa la set filter sulla prima riga (che è quella usata)
book.add(rep);
}
sheet.destroy(); //cancella le commesse aggiunte in automatico sullo sheet
}
else //se ha almeno una riga sullo sheet delle cms/cdc...
{
FOR_EACH_SHEET_ROW(sheet, r, row) //per ogni cdc/cms che appare nello sheet di pag.1 della msk..
{
rep.set_filter(mask, r); //..chiama il metodone globale che crea e compila il file..
//..temporaneo i cui dati riempiranno il report
book.add(rep); //aggiunge il report relativo alla cdc/cms corrente al book
}
}
book.print_or_preview(); //stampa il book dei report
}
}
int ca3600(int argc, char* argv[])
{
TPag_per_cms a;
a.run(argc,argv,TR("Stampa pagato per commessa"));
return 0;
}

62
ca/ca3600.h Executable file
View File

@ -0,0 +1,62 @@
// campi per la maschera ca3600
#ifndef __CA3600_H
#define __CA3600_H
#define F_TIPODATA 200
#define F_DATAINI 201
#define F_DATAFIN 202
#define F_DACODFOR 203
#define F_DADESFOR 204
#define F_ACODFOR 205
#define F_ADESFOR 206
#define F_ORDINAMENTO 207
#define F_REPORT 208
//campi generati dal pdc
#define F_CDC1_INI 206
#define F_CDC4_INI 209
#define F_CDC1_FIN 216
#define F_CDC4_FIN 219
#define F_DES1_INI 226
#define F_DES4_INI 229
#define F_DES1_FIN 236
#define F_DES4_FIN 239
//sheet e righe relative
#define F_RIGHE 260
//campi generati dai piani dei conti
#define F_PIANO 319
#define F_PRE0 320
#define F_PRE1 321
#define F_PRE2 322
#define F_PRE3 323
#define F_PREDES1 325
#define F_PREDES2 326
#define F_PREDES3 327
#define F_PDC0_INI 330
#define F_PDC1_INI 331
#define F_PDC4_INI 334
#define F_PDCDES1_INI 335
#define F_PDCDES4_INI 338
#define F_PDC0_FIN 340
#define F_PDC1_FIN 341
#define F_PDC4_FIN 344
#define F_PDCDES1_FIN 345
#define F_PDCDES4_FIN 348
#define F_PAN0_INI 350
#define F_PAN1_INI 351
#define F_PAN4_INI 354
#define F_PANDES1_INI 355
#define F_PANDES4_INI 358
#define F_PAN0_FIN 360
#define F_PAN1_FIN 361
#define F_PAN4_FIN 364
#define F_PANDES1_FIN 365
#define F_PANDES4_FIN 368
#endif // __CA3600_H

298
ca/ca3600.uml Executable file
View File

@ -0,0 +1,298 @@
#include "ca3600.h"
#include "camask.h"
TOOLBAR "" 0 -3 0 3
STRING DLG_PROFILE 50
BEGIN
PROMPT 9 0 "Profilo "
PSELECT
END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -13 -1 "~Stampa"
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_CONFIG 10 2
BEGIN
PROMPT -23 -1 "~Configura"
PICTURE BMP_CONFIG
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
PAGE "CdC/Cms/Fasi / Date / Fornitori" -1 -1 78 20
SPREADSHEET F_RIGHE -1 -13
BEGIN
PROMPT 1 1 "Centro di Costo / Commessa / Fase"
ITEM "Cdc1"
ITEM "Cdc2"
ITEM "Cdc3"
ITEM "Cdc4"
ITEM "Cdc5"
ITEM "Cdc6"
ITEM "Cdc7"
ITEM "Cdc8"
ITEM "Cdc9"
ITEM "Cdc10"
ITEM "Cdc11"
ITEM "Cdc12"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 9 "@bEstrazione per data di: "
END
RADIOBUTTON F_TIPODATA 76
BEGIN
PROMPT 2 9 ""
ITEM "0|Registrazione"
ITEM "1|Documento"
ITEM "2|Pagamento"
FLAGS "Z"
END
DATE F_DATAINI
BEGIN
PROMPT 2 11 "Dalla data "
END
DATE F_DATAFIN
BEGIN
PROMPT 25 11 "Alla data "
VALIDATE DATE_CMP_FUNC >= F_DATAINI
WARNING "La data finale deve essere successiva a quella iniziale"
END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 13 "@bSelezione fornitori"
END
NUMBER F_DACODFOR 6
BEGIN
PROMPT 2 14 "Da codice "
USE LF_CLIFO KEY 1
FLAGS "U"
INPUT TIPOCF "F"
INPUT CODCF F_DACODFOR
DISPLAY "Codice " CODCF
DISPLAY "Ragione sociale@50" RAGSOC
OUTPUT F_DACODFOR CODCF
OUTPUT F_DADESFOR RAGSOC
CHECKTYPE NORMAL
END
STRING F_DADESFOR 50
BEGIN
PROMPT 23 14 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF "F"
INPUT RAGSOC F_DADESFOR
DISPLAY "Ragione sociale@50" RAGSOC
DISPLAY "Codice " CODCF
COPY OUTPUT F_DACODFOR
CHECKTYPE NORMAL
END
NUMBER F_ACODFOR 6
BEGIN
PROMPT 2 15 "A codice "
COPY USE F_DACODFOR
FLAGS "U"
INPUT TIPOCF "F"
INPUT CODCF F_ACODFOR
COPY DISPLAY F_DACODFOR
OUTPUT F_ACODFOR CODCF
OUTPUT F_ADESFOR RAGSOC
CHECKTYPE NORMAL
NUM_EXPR (#F_ACODFOR==0)||(#F_ACODFOR>=#F_DACODFOR)
WARNING "Il codice fornitore finale non puo' essere inferiore a quello iniziale"
END
STRING F_ADESFOR 50
BEGIN
PROMPT 23 15 ""
COPY USE F_DADESFOR
INPUT TIPOCF "F"
INPUT RAGSOC F_ADESFOR
COPY DISPLAY F_DADESFOR
COPY OUTPUT F_ACODFOR
CHECKTYPE NORMAL
END
RADIOBUTTON F_ORDINAMENTO 1 40
BEGIN
PROMPT 1 17 "@bTipo ordinamento"
ITEM " |Commessa"
ITEM "X|Fornitore"
FLAGS "Z"
END
STRING F_REPORT 256 64
BEGIN
PROMPT 2 20 "Report "
FLAGS "B"
CHECKTYPE REQUIRED
END
ENDPAGE
PAGE "Conti" -1 -1 78 20
LIST F_PIANO 1 12
BEGIN
PROMPT 1 1 "Piano dei conti "
ITEM "A|Analitico"
MESSAGE HIDE,5@|SHOW,6@
ITEM "C|Contabile"
MESSAGE HIDE,6@|SHOW,5@
END
GROUPBOX F_PRE0 76 6
BEGIN
PROMPT 1 3 "@bPrefisso del piano dei conti analitico:"
GROUP 6
END
GROUPBOX F_PDC0_INI 76 6
BEGIN
PROMPT 1 9 "@bDa conto:"
GROUP 4
END
GROUPBOX F_PDC0_FIN 76 6
BEGIN
PROMPT 1 15 "@bA conto:"
GROUP 4
END
ENDPAGE
ENDMASK
PAGE "Riga Analitica" -1 -1 78 19
STRING S_CDC1 20
BEGIN
PROMPT 1 2 "Cdc1"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC2 20
BEGIN
PROMPT 21 2 "Cdc2"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC3 20
BEGIN
PROMPT 41 2 "Cdc3"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC4 20
BEGIN
PROMPT 61 2 "Cdc4"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC5 20
BEGIN
PROMPT 1 3 "Cdc5"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC6 20
BEGIN
PROMPT 21 3 "Cdc6"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC7 20
BEGIN
PROMPT 41 3 "Cdc7"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC8 20
BEGIN
PROMPT 61 3 "Cdc8"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC9 20
BEGIN
PROMPT 1 4 "Cdc9"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC10 20
BEGIN
PROMPT 21 4 "Cdc10"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC11 20
BEGIN
PROMPT 41 4 "Cdc11"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
STRING S_CDC12 20
BEGIN
PROMPT 61 4 "Cdc12"
FLAGS "B"
CHECKTYPE NORMAL
GROUP 1
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK

25
ca/ca3601.h Executable file
View File

@ -0,0 +1,25 @@
// campi per la maschera ca3601
#define F_COSTI 200
#define F_PAGAMENTI 201
#define F_RITFIS 202
#define F_RITSOC 203
#define F_SC_GRUPPO 101
#define F_SC_CONTO 102
#define F_SC_SOTTOCONTO 103
#define F_SC_DESCRIZIONE 104
#define F_SP_GRUPPO 101
#define F_SP_CONTO 102
#define F_SP_SOTTOCONTO 103
#define F_SP_DESCRIZIONE 104
#define F_FI_GRUPPO 101
#define F_FI_CONTO 102
#define F_FI_SOTTOCONTO 103
#define F_FI_DESCRIZIONE 104
#define F_SO_GRUPPO 101
#define F_SO_CONTO 102
#define F_SO_SOTTOCONTO 103
#define F_SO_DESCRIZIONE 104

414
ca/ca3601.uml Executable file
View File

@ -0,0 +1,414 @@
#include "ca3601.h"
TOOLBAR "" 0 -2 0 2
BUTTON DLG_SAVEREC 10 2
BEGIN
PROMPT -12 -1 ""
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
PAGE "Costi / Pagamenti" -1 -1 78 20
TEXT -1
BEGIN
PROMPT 1 0 "@bCosti"
END
SPREADSHEET F_COSTI 78 10
BEGIN
PROMPT 1 1 "Costi"
ITEM "Gruppo"
ITEM "Conto"
ITEM "Sottoconto"
ITEM "Descrizione@50"
END
TEXT -1
BEGIN
PROMPT 1 11 "@bPagamenti"
END
SPREADSHEET F_PAGAMENTI 78
BEGIN
PROMPT 1 12 "Pagamenti"
ITEM "Gruppo"
ITEM "Conto"
ITEM "Sottoconto"
ITEM "Descrizione@50"
END
ENDPAGE
PAGE "Ritenute Fiscali / Sociali" -1 -1 78 20
TEXT -1
BEGIN
PROMPT 1 0 "@bRitenute fiscali"
END
SPREADSHEET F_RITFIS 78 10
BEGIN
PROMPT 1 1 "Costi"
ITEM "Gruppo"
ITEM "Conto"
ITEM "Sottoconto"
ITEM "Descrizione@50"
END
TEXT -1
BEGIN
PROMPT 1 11 "@bRitenute sociali"
END
SPREADSHEET F_RITSOC 78
BEGIN
PROMPT 1 12 "Pagamenti"
ITEM "Gruppo"
ITEM "Conto"
ITEM "Sottoconto"
ITEM "Descrizione@50"
END
ENDPAGE
ENDMASK
//----------------------MOVIMENTI IVA------------------------------//
//-----------Pagina di riga dello sheet costi----------------------//
PAGE "Riga Costo" -1 -1 66 10
NUMBER F_SC_GRUPPO 3
BEGIN
PROMPT 1 2 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_SC_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SC_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_SC_CONTO 3
BEGIN
PROMPT 1 3 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_SC_GRUPPO
INPUT CONTO F_SC_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SC_CONTO CONTO
OUTPUT F_SC_GRUPPO GRUPPO
CHECKTYPE NORMAL
END
NUMBER F_SC_SOTTOCONTO 6
BEGIN
PROMPT 1 4 "Sottoconto "
USE LF_PCON
INPUT GRUPPO F_SC_GRUPPO
INPUT CONTO F_SC_CONTO
INPUT SOTTOCONTO F_SC_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SC_SOTTOCONTO SOTTOCONTO
OUTPUT F_SC_GRUPPO GRUPPO
OUTPUT F_SC_CONTO CONTO
OUTPUT F_SC_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
STRING F_SC_DESCRIZIONE 50
BEGIN
PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
INPUT DESCR F_SC_DESCRIZIONE
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SC_SOTTOCONTO SOTTOCONTO
OUTPUT F_SC_CONTO CONTO
OUTPUT F_SC_GRUPPO GRUPPO
OUTPUT F_SC_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK
//-----------Pagina di riga dello sheet pagamenti----------------------//
PAGE "Riga Pagamento" -1 -1 66 10
NUMBER F_SP_GRUPPO 3
BEGIN
PROMPT 1 2 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_SP_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SP_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_SP_CONTO 3
BEGIN
PROMPT 1 3 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_SP_GRUPPO
INPUT CONTO F_SP_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SP_CONTO CONTO
OUTPUT F_SP_GRUPPO GRUPPO
CHECKTYPE NORMAL
END
NUMBER F_SP_SOTTOCONTO 6
BEGIN
PROMPT 1 4 "Sottoconto "
USE LF_PCON
INPUT GRUPPO F_SP_GRUPPO
INPUT CONTO F_SP_CONTO
INPUT SOTTOCONTO F_SP_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SP_SOTTOCONTO SOTTOCONTO
OUTPUT F_SP_GRUPPO GRUPPO
OUTPUT F_SP_CONTO CONTO
OUTPUT F_SP_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
STRING F_SP_DESCRIZIONE 50
BEGIN
PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
INPUT DESCR F_SP_DESCRIZIONE
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SP_SOTTOCONTO SOTTOCONTO
OUTPUT F_SP_CONTO CONTO
OUTPUT F_SP_GRUPPO GRUPPO
OUTPUT F_SP_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK
//-------------------MOVIMENTI CONTABILI---------------------------//
//-----------Pagina di riga dello sheet costi----------------------//
PAGE "Riga Ritenuta Fiscale" -1 -1 66 10
NUMBER F_FI_GRUPPO 3
BEGIN
PROMPT 1 2 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_FI_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_FI_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_FI_CONTO 3
BEGIN
PROMPT 1 3 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_FI_GRUPPO
INPUT CONTO F_FI_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_FI_CONTO CONTO
OUTPUT F_FI_GRUPPO GRUPPO
CHECKTYPE NORMAL
END
NUMBER F_FI_SOTTOCONTO 6
BEGIN
PROMPT 1 4 "Sottoconto "
USE LF_PCON
INPUT GRUPPO F_FI_GRUPPO
INPUT CONTO F_FI_CONTO
INPUT SOTTOCONTO F_FI_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_FI_SOTTOCONTO SOTTOCONTO
OUTPUT F_FI_GRUPPO GRUPPO
OUTPUT F_FI_CONTO CONTO
OUTPUT F_FI_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
STRING F_FI_DESCRIZIONE 50
BEGIN
PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
INPUT DESCR F_FI_DESCRIZIONE
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_FI_SOTTOCONTO SOTTOCONTO
OUTPUT F_FI_CONTO CONTO
OUTPUT F_FI_GRUPPO GRUPPO
OUTPUT F_FI_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK
//-----------Pagina di riga dello sheet pagamenti----------------------//
PAGE "Riga Ritenuta Sociale" -1 -1 66 10
NUMBER F_SO_GRUPPO 3
BEGIN
PROMPT 1 2 "Gruppo "
USE LF_PCON KEY 1 SELECT (CONTO="")
INPUT GRUPPO F_SO_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SO_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER F_SO_CONTO 3
BEGIN
PROMPT 1 3 "Conto "
USE LF_PCON KEY 1 SELECT (SOTTOCONTO="")
INPUT GRUPPO F_SO_GRUPPO
INPUT CONTO F_SO_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SO_CONTO CONTO
OUTPUT F_SO_GRUPPO GRUPPO
CHECKTYPE NORMAL
END
NUMBER F_SO_SOTTOCONTO 6
BEGIN
PROMPT 1 4 "Sottoconto "
USE LF_PCON
INPUT GRUPPO F_SO_GRUPPO
INPUT CONTO F_SO_CONTO
INPUT SOTTOCONTO F_SO_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT F_SO_SOTTOCONTO SOTTOCONTO
OUTPUT F_SO_GRUPPO GRUPPO
OUTPUT F_SO_CONTO CONTO
OUTPUT F_SO_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
STRING F_SO_DESCRIZIONE 50
BEGIN
PROMPT 1 5 "Descrizione "
USE LF_PCON KEY 2
INPUT DESCR F_SO_DESCRIZIONE
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
OUTPUT F_SO_SOTTOCONTO SOTTOCONTO
OUTPUT F_SO_CONTO CONTO
OUTPUT F_SO_GRUPPO GRUPPO
OUTPUT F_SO_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -13 -1 ""
END
BUTTON DLG_DELREC 10 2
BEGIN
PROMPT -23 -1 ""
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -33 -1 ""
END
ENDPAGE
ENDMASK

View File

@ -27,7 +27,6 @@ protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
const TString& get_report_class() const;
bool test_compatible_report();
bool esistono_riclassificazioni() const;
public:
@ -222,13 +221,11 @@ TPrint_rendiconto_ca_mask::TPrint_rendiconto_ca_mask()
}
}
// creazione dei campi della seconda pagina della maschera (cdc/cms/fasi)
// creazione dei campi della pagina della maschera con lo sheet di cdc/cms/fasi
create_sheet(F_RIGHE);
// setta gli handlers a tutti i campi generati della maschera;senza questa chiamata la on_field_event
// non puo' funzionare sui campi generati!!!
set_handlers();
//la terza pagina ha uno sheet standard e non necessita di metodi per la creazione
}
@ -1003,21 +1000,19 @@ void TPrint_rendiconto_ca_recordset::set_filter(const TPrint_rendiconto_ca_mask&
}
}
_dadata = msk.get_date(F_DATAINI);
_adata = msk.get_date(F_DATAFIN);
_dadata = msk.get_date(F_DATAINI);
_adata = msk.get_date(F_DATAFIN);
if (_riclassificato)
{
//esiste un prefisso a più livelli?
if (msk.get(F_PRE1).not_empty())
for (short id = F_PRE1; id <= F_PRE3 && msk.id2pos(id) > 0; id++)
{
_prefix << msk.get(F_PRE1);
if (msk.get(F_PRE2).not_empty())
{
_prefix << msk.get(F_PRE1);
if (msk.get(F_PRE3).not_empty())
_prefix << msk.get(F_PRE3);
}
const TString& pr = msk.get(id);
if (pr.not_empty())
_prefix << pr;
else
break;
}
}
//metodi per riempire il file da cui generare il report

View File

@ -44,7 +44,7 @@
#define F_PANDES1_FIN 365
#define F_PANDES4_FIN 368
//sheet di pagina 2
//sheet con cms/fsc/cdc
#define F_RIGHE 260
#endif // __CA3700_H