Patch level :4.0 673

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :RICORDO CHE TC9 ESISTE SOLO NELLA 4.0; EVITARE I RIPORTI!


git-svn-id: svn://10.65.10.50/trunk@15158 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-04-02 09:28:14 +00:00
parent 7388c8a340
commit bb2ba3f216
9 changed files with 2613 additions and 47 deletions

View File

@ -286,7 +286,8 @@ TTS_textset::TTS_textset(const char* query)
TString80 field;
// dati iva
for (int i=0; i<8; i++)
int i;
for (i = 0; i < 8; i++)
{
field.format("TRF-IMPONIB_%d", i);
add_field("0", field, 12, n, 475+(31*i)); // imponibile
@ -304,7 +305,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-TOT-FATT", 12, n, 723); // totale fattura
// conti di ricavo/costo
for (i=0; i<8; i++)
for (i = 0; i < 8; i++)
{
field.format("TRF-CONTORIC_%d", i);
add_field("0", field, 7, n, 735+(19*i)); // codice conto di ricavo/costo
@ -319,7 +320,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-CAU-AGG-2-PAGAM", 34, an, 939); // ulteriore descrizione aggiuntiva
// altri movimenti
for (i=0; i<80; i++)
for (i = 0; i < 80; i++)
{
field.format("TRF-CONTO_%d", i);
add_field("0", field, 7, n, 973+(64*i)); // codice conto
@ -338,7 +339,7 @@ TTS_textset::TTS_textset(const char* query)
}
// ratei e risconti
for (i=0; i<10; i++)
for (i = 0; i < 10; i++)
{
field.format("TRF-RIFER-TAB_%d", i);
add_field("0", field, 1, an, 6093+(19*i)); // tabella di riferimento
@ -358,7 +359,7 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-AN-TIPO-SOGG", 1, n, 6290); // tipo soggetto ritenuta di acconto
// ulteriori dati ev. pagamento o movimenti diversi
for (i=0; i<80; i++)
for (i = 0; i < 80; i++)
{
field.format("TRF-EC-PARTITA-SEZ-PAG_%d", i);
add_field("0", field, 2, n, 6291+(2*i)); // numero sezionale partita estratto conto
@ -374,13 +375,13 @@ TTS_textset::TTS_textset(const char* query)
add_field("0", "TRF-RIT-4", 12, n, 6526); // 4
// ulteriori dati per unita' produttive ricavi
for (i=0; i<8; i++)
for (i = 0; i < 8; i++)
{
field.format("TRF-UNITA-RICAVI_%d", i);
add_field("0", field, 2, n, 6538+(2*i)); //
}
// ulteriori dati per unita' produttive pagamenti
for (i=0; i<80; i++)
for (i = 0; i < 80; i++)
{
field.format("TRF-UNITA-PAGAM_%d", i);
add_field("0", field, 2, n, 6554+(2*i)); //

View File

@ -7,8 +7,8 @@ int main(int argc, char** argv)
const int op = argc < 2 ? 0 : argv[1][1]-'0';
switch (op)
{
case 0: tc9100(argc,argv); break; // esiste sulla 4.0 Invio a Proforma
case 1: tc9200(argc,argv); break; // esiste dalla 4.0 Invio a Sispac/Cosmo
case 0: tc9100(argc,argv); break; // Invio a Proforma
case 1: tc9200(argc,argv); break; // Invio a Sispac/Cosmo
default: tc9100(argc,argv); break;
}
exit(0);

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,23 @@
// invio dati ad altra procedura (Proforma)
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_MOVIMENTI 103
#define F_CLIENTI 104
#define F_FORNITORI 105
#define F_CONTI 106
#define F_PAGAMENTI 107
#define F_TIPOINVIO 108
#define F_DESTINAZIONE 109
#define F_DATAINI 110
#define F_DATAFIN 111
#define F_RIPRISTINA 112
#define F_DATARIPRISTINO 113
#define F_CODDITTA 301
#define F_RAGSOC 302
#define F_MOVIMENTI 303
#define F_CLIENTI 304
#define F_FORNITORI 305
#define F_CONTI 306
#define F_PAGAMENTI 307
#define F_TIPOINVIO 308
#define F_DESTINAZIONE 309
#define F_DATAINI 310
#define F_DATAFIN 311
#define F_RIPRISTINA 312
#define F_DATARIPRISTINO 313
#define F_PDCC 315
#define S_TIPO 101
#define S_GRUPPO 102
#define S_CONTO 103
#define S_SOTTOCONTO 104
#define S_DESCRIZIONE 105

View File

@ -7,3 +7,426 @@ SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA = N
DECIMAL = 0
FILLER = '0'
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER = '0'
LENGTH = 8
PICTURE = 1444
[TYPE IMPORTO]
ALIGN = R
DATA = N
DECIMAL = 2
FILLER = '0'
LENGTH = 14
PICTURE = @@@@@@@@@,@@
[RECORD T]
NAME(0) = ID REGISTRAZIONE
TYPE(0) = NUMERO
POSITION(0) = 0
LENGTH(0) = 10
FIELD(0) = NUMREG
NAME(1) = DATA REGISTRAZIONE
TYPE(1) = DATA
POSITION(1) = 10
LENGTH(1) = 8
FIELD(1) = DATAREG
NAME(2) = CODICE CAUSALE
TYPE(2) = STRINGA
POSITION(2) = 18
LENGTH(2) = 3
FIELD(2) = CODCAUS
NAME(3) = DESCRIZIONE CAUSALE
TYPE(3) = STRINGA
POSITION(3) = 21
LENGTH(3) = 40
FIELD(3) = 26->DESCR[1,40]
NAME(4) = DESCRIZIONE TESTATA
TYPE(4) = STRINGA
POSITION(4) = 61
LENGTH(4) = 240
FIELD(4) = DESCR[1,40]
NAME(5) = DATA DOCUMENTO
TYPE(5) = DATA
POSITION(5) = 301
LENGTH(5) = 8
FIELD(5) = DATADOC
NAME(6) = NUMERO DOCUMENTO
TYPE(6) = STRINGA
POSITION(6) = 309
LENGTH(6) = 6
FIELD(6) = NUMDOC
NAME(7) = TIPO DOCUMENTO
TYPE(7) = STRINGA
POSITION(7) = 315
LENGTH(7) = 30
NAME(8) = CODICE CLIFOR
TYPE(8) = STRINGA
POSITION(8) = 345
LENGTH(8) = 10
FIELD(8) = CODCF
NAME(9) = TOTALE IMPONIBILE
TYPE(9) = IMPORTO
POSITION(9) = 355
NAME(10) = TOTALE IVA
TYPE(10) = IMPORTO
POSITION(10) = 369
NAME(11) = TOTALE DOCUMENTO
TYPE(11) = IMPORTO
POSITION(11) = 383
FIELD(11) = TOTDOC
NAME(12) = DATA PAGAMENTO
TYPE(12) = DATA
POSITION(12) = 397
LENGTH(12) = 8
NAME(13) = TIPO PAGAMENTO
TYPE(13) = STRINGA
POSITION(13) = 405
LENGTH(13) = 20
FIELD(13) = CODPAG
NAME(14) = DATA COMPETENZA
TYPE(14) = DATA
POSITION(14) = 425
LENGTH(14) = 8
FIELD(14) = DATACOMP
NAME(15) = NUMERO PROTOCOLLO
TYPE(15) = STRINGA
POSITION(15) = 433
LENGTH(15) = 10
FIELD(15) = PROTIVA
NAME(16) = VALUTA
TYPE(16) = STRINGA
POSITION(16) = 443
LENGTH(16) = 1
MESSAGE(16)=_FISSO,!1
[RECORD R]
NAME(0) = ID REGISTRAZIONE
TYPE(0) = NUMERO
POSITION(0) = 0
LENGTH(0) = 10
FIELD(0) = 23->NUMREG
NAME(1) = FLAG RIGA IVA
TYPE(1) = STRINGA
POSITION(1) = 10
LENGTH(1) = 1
MESSAGE(1) = _FISSO,!N
NAME(2) = FLAG DARE/AVERE
TYPE(2) = STRINGA
POSITION(2) = 11
LENGTH(2) = 1
FIELD(2) = SEZIONE
NAME(3) = CODICE MASTRO
TYPE(3) = STRINGA
POSITION(3) = 12
LENGTH(3) = 5
NAME(4) = CODICE CONTO
TYPE(4) = STRINGA
POSITION(4) = 17
LENGTH(4) = 5
NAME(5) = CODICE SOTTOCONTO
TYPE(5) = STRINGA
POSITION(5) = 22
LENGTH(5) = 5
NAME(6) = FLAG CLIFOR
TYPE(6) = STRINGA
POSITION(6) = 27
LENGTH(6) = 1
NAME(7) = CODICE CLIFOR
TYPE(7) = STRINGA
POSITION(7) = 28
LENGTH(7) = 10
NAME(8) = DESCRIZIONE RIGA
TYPE(8) = STRINGA
POSITION(8) = 38
LENGTH(8) = 40
FIELD(8) = DESCR[1,40]
NAME(9) = IMPORTO SOTTOCONTO
TYPE(9) = IMPORTO
POSITION(9) = 78
FIELD(9) = IMPORTO
NAME(10) = IMPONIBILE
TYPE(10) = IMPORTO
POSITION(10) = 92
NAME(11) = CODICE IVA
TYPE(11) = STRINGA
POSITION(11) = 106
LENGTH(11) = 4
NAME(12) = CP INDED
TYPE(12) = STRINGA
POSITION(12) = 110
LENGTH(12) = 15
NAME(13) = COMMESSA
TYPE(13) = STRINGA
POSITION(13) = 125
LENGTH(13) = 20
FIELD(13) = CODCMS
NAME(14) = SOTTOPROGETTO
TYPE(14) = STRINGA
POSITION(14) = 145
LENGTH(14) = 20
NAME(15) = EDIZIONE
TYPE(15) = STRINGA
POSITION(15) = 165
LENGTH(15) = 20
NAME(16) = VOCE DI SPESA
TYPE(16) = STRINGA
POSITION(16) = 185
LENGTH(16) = 10
[RECORD I]
NAME(0) = ID REGISTRAZIONE
TYPE(0) = NUMERO
POSITION(0) = 0
LENGTH(0) = 10
FIELD(0) = NUMREG
NAME(1) = FLAG RIGA IVA
TYPE(1) = STRINGA
POSITION(1) = 10
LENGTH(1) = 1
MESSAGE(1) = _FISSO,!S
NAME(3) = CODICE MASTRO
TYPE(3) = STRINGA
POSITION(3) = 12
LENGTH(3) = 5
FIELD(3) = GRUPPO
NAME(4) = CODICE CONTO
TYPE(4) = STRINGA
POSITION(4) = 17
LENGTH(4) = 5
FIELD(4) = CONTO
NAME(5) = CODICE SOTTOCONTO
TYPE(5) = STRINGA
POSITION(5) = 22
LENGTH(5) = 5
FIELD(5) = SOTTOCONTO
NAME(6) = FLAG CLIFOR
TYPE(6) = STRINGA
POSITION(6) = 27
LENGTH(6) = 1
FIELD(6) = TIPOC
NAME(7) = CODICE CLIFOR
TYPE(7) = STRINGA
POSITION(7) = 28
LENGTH(7) = 10
NAME(8) = DESCRIZIONE RIGA
TYPE(8) = STRINGA
POSITION(8) = 38
LENGTH(8) = 40
NAME(9) = IMPORTO SOTTOCONTO
TYPE(9) = IMPORTO
POSITION(9) = 78
NAME(10) = IMPONIBILE
TYPE(10) = IMPORTO
POSITION(10) = 92
FIELD(10) = IMPONIBILE
NAME(11) = CODICE IVA
TYPE(11) = STRINGA
POSITION(11) = 106
LENGTH(11) = 4
FIELD(11) = CODIVA
NAME(12) = CP INDED
TYPE(12) = STRINGA
POSITION(12) = 110
LENGTH(12) = 15
NAME(13) = COMMESSA
TYPE(13) = STRINGA
POSITION(13) = 125
LENGTH(13) = 20
NAME(14) = SOTTOPROGETTO
TYPE(14) = STRINGA
POSITION(14) = 145
LENGTH(14) = 20
NAME(15) = EDIZIONE
TYPE(15) = STRINGA
POSITION(15) = 165
LENGTH(15) = 20
NAME(16) = VOCE DI SPESA
TYPE(16) = STRINGA
POSITION(16) = 185
LENGTH(16) = 10
[RECORD C]
NAME(0) = CODICE
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 10
FIELD(0) = 20->CODCF
NAME(1) = RAGIONE SOCIALE
TYPE(1) = STRINGA
POSITION(1) = 11
LENGTH(1) = 40
MESSAGE(1) = _RAGSOC
FIELD(1) = 20->RAGSOC
NAME(2) = PARTITA IVA
TYPE(2) = STRINGA
POSITION(2) = 50
LENGTH(2) = 12
FIELD(2)=20->PAIV
NAME(3) = CODICE FISCALE
TYPE(3) = STRINGA
POSITION(3) = 62
LENGTH(3) = 16
FIELD(3) = 20->COFI
NAME(4) = INDIRIZZO
TYPE(4) = STRINGA
POSITION(4) = 78
LENGTH(4) = 40
FIELD(4) = 20->INDCF
NAME(5) = CAP DI RESIDENZA
TYPE(5) = STRINGA
POSITION(5) = 118
LENGTH(5) = 5
FIELD(5)=20->CAPCF
NAME(6) = COMUNE DI RESIDENZA
TYPE(6) = STRINGA
POSITION(6) = 123
LENGTH(6) = 23
FIELD(6) = 13->DENCOM[1,40]
NAME(7) = PROVINCIA DI RESIDENZA
TYPE(7) = STRINGA
POSITION(7) = 163
LENGTH(7) = 2
FIELD(7) = 13->PROVCOM
NAME(8) = TELEFONO
TYPE(8) = STRINGA
POSITION(8) = 165
LENGTH(8) = 20
FIELD(8) = 20->TEL
MESSAGE(8) = _TELEFONO
[RECORD P]
NAME(0) = CODICE MASTRO
TYPE(0) = STRINGA
POSITION(0) = 0
LENGTH(0) = 5
FIELD(0)=19->GRUPPO
NAME(1) = CODICE CONTO
TYPE(1) = STRINGA
POSITION(1) = 5
B LENGTH(1) = 5
FIELD(1)=19->CONTO
NAME(2) = CODICE SOTTOCONTO
TYPE(2) = STRINGA
POSITION(2) = 10
LENGTH(2) = 5
FIELD(2)=19->SOTTOCONTO
NAME(3) = DESCRIZIONE
TYPE(3) = STRINGA
POSITION(3) = 15
LENGTH(3) = 80
FIELD(3)=19->DESCR
[RECORD G]
NAME(0) = ID REGISTRAZIONE PAGAMENTO
TYPE(0) = NUMERO
POSITION(0) = 0
LENGTH(0) = 10
MESSAGE(0) = _NREGPAG
NAME(1) = ID REGISTRAZIONE COSTO
TYPE(1) = NUMERO
POSITION(1) = 10
LENGTH(1) = 10
MESSAGE(1) = _NREGCOSTO
NAME(2) = IMPORTO
TYPE(2) = IMPORTO
POSITION(2) = 20
MESSAGE(2) = _IMPORTO
NAME(3) = FLAG ACCONTO/SALDO
TYPE(3) = STRINGA
POSITION(3) = 34
LENGTH(3) = 1
MESSAGE(3) = _FLAG
NAME(4) = VALUTA
TYPE(4) = STRINGA
POSITION(4) = 35
LENGTH(4) = 1
MESSAGE(4)=_FISSO,!1

View File

@ -1,5 +1,19 @@
#include "tc9100a.h"
TOOLBAR "" 0 -2 0 2
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -11 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -11 ""
END
ENDPAGE
PAGE "Invio dati contabilita'" -1 -1 78 20
GROUPBOX DLG_NULL 76 3
@ -31,70 +45,188 @@ END
BOOLEAN F_MOVIMENTI
BEGIN
PROMPT 3 5 "Movimenti contabili"
MESSAGE TRUE,ENABLE F_DATAFIN
MESSAGE FALSE CLEAR,F_PAGAMENTI|DISABLE,F_DATAFIN
MESSAGE TRUE ENABLE,F_PAGAMENTI|ENABLE,F_DATAFIN
END
BOOLEAN F_CLIENTI
BEGIN
PROMPT 3 6 "Clienti"
PROMPT 3 6 "Clienti"
END
BOOLEAN F_FORNITORI
BEGIN
PROMPT 3 7 "Fornitori"
PROMPT 3 7 "Fornitori"
END
BOOLEAN F_CONTI
BEGIN
PROMPT 3 8 "Piano dei conti"
PROMPT 3 8 "Piano dei conti"
END
BOOLEAN F_PAGAMENTI
BEGIN
PROMPT 40 5 "Pagamenti"
PROMPT 40 5 "Pagamenti"
END
LISTBOX F_TIPOINVIO 20
BEGIN
PROMPT 2 10 "Invio a "
ITEM "P|Proforma"
PROMPT 2 10 "Invio a "
ITEM "P|Proforma"
END
STRING F_DESTINAZIONE 20
BEGIN
PROMPT 2 11 "Destinazione "
PROMPT 2 11 "Destinazione "
END
DATE F_DATAINI
BEGIN
PROMPT 2 12 "Data iniziale "
PROMPT 2 12 "Data iniziale "
END
DATE F_DATAFIN
BEGIN
PROMPT 40 12 "Data finale "
PROMPT 40 12 "Data finale "
END
BUTTON F_RIPRISTINA 20
BUTTON F_RIPRISTINA 20 2
BEGIN
PROMPT 2 14 "Annulla invio"
MESSAGE SHOW,F_DATARIPRISTINO|ENABLE,F_DATARIPRISTINO
PROMPT 2 14 "Annulla invio"
MESSAGE SHOW,F_DATARIPRISTINO|ENABLE,F_DATARIPRISTINO
END
DATE F_DATARIPRISTINO
BEGIN
PROMPT 25 14 "Annulla invio fino al "
FLAGS "HD"
PROMPT 25 14 "Annulla invio fino al "
FLAGS "HD"
END
BUTTON DLG_OK 9 2
ENDPAGE
PAGE "Conti" -1 -1 78 20
TEXT -1
BEGIN
PROMPT -12 -1 ""
PROMPT 1 1 "@bPiano dei conti contabile"
END
BUTTON DLG_QUIT 9 2
SPREADSHEET F_PDCC 78 -6
BEGIN
PROMPT -22 -1 ""
PROMPT 1 2 "Pdcc"
ITEM "Tipo"
ITEM "Gruppo"
ITEM "Conto"
ITEM "Sottoconto"
ITEM "Descrizione@50"
END
TEXT -1
BEGIN
PROMPT 1 17 "Inserire conti di tipo F per ritenute Fiscali"
END
TEXT -1
BEGIN
PROMPT 1 18 "S per ritenute Sociali, C per Costi, P per Pagamenti"
END
BUTTON DLG_SAVEREC 12 2
BEGIN
PROMPT -11 19 ""
PICTURE BMP_SAVEREC
PICTURE BMP_SAVERECDN
END
ENDPAGE
ENDMASK
//--------------------------------------------------------------------
// Riga dello sheet dei conti
//--------------------------------------------------------------------
PAGE "Riga Piano dei conti contabile" -1 -1 78 8
LIST S_TIPO 1 18
BEGIN
PROMPT 1 1 "Tipo "
ITEM "C|Costi"
ITEM "P|Pagamenti"
ITEM "F|Ritenute fiscali"
ITEM "S|Ritenute sociali"
END
NUMBER S_GRUPPO 3
BEGIN
PROMPT 1 2 "Gruppo "
USE LF_PCON KEY 1 SELECT CONTO=""
INPUT GRUPPO S_GRUPPO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Descrizione@50" DESCR
OUTPUT S_GRUPPO GRUPPO
CHECKTYPE REQUIRED
END
NUMBER S_CONTO 3
BEGIN
PROMPT 1 3 "Conto "
USE LF_PCON KEY 1 SELECT ((CONTO!="")&&(SOTTOCONTO=""))
COPY INPUT S_GRUPPO
INPUT CONTO S_CONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT S_GRUPPO GRUPPO
OUTPUT S_CONTO CONTO
CHECKTYPE NORMAL
VALIDATE REQIF_FUNC 1 S_SOTTOCONTO
END
NUMBER S_SOTTOCONTO 6
BEGIN
PROMPT 1 4 "Sottoconto "
USE LF_PCON KEY 1 SELECT SOTTOCONTO!=""
COPY INPUT S_CONTO
INPUT SOTTOCONTO S_SOTTOCONTO
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
DISPLAY "Descrizione@50" DESCR
OUTPUT S_SOTTOCONTO SOTTOCONTO
OUTPUT S_CONTO CONTO
OUTPUT S_GRUPPO GRUPPO
OUTPUT S_DESCRIZIONE DESCR
CHECKTYPE NORMAL
END
STRING S_DESCRIZIONE 50
BEGIN
PROMPT 1 5 "Descrizione "
KEY 2
USE LF_PCON KEY 2
INPUT DESCR S_DESCRIZIONE
DISPLAY "Descrizione@50" DESCR
DISPLAY "Gruppo" GRUPPO
DISPLAY "Conto" CONTO
DISPLAY "Sottoconto" SOTTOCONTO
COPY OUTPUT S_SOTTOCONTO
CHECKTYPE REQUIRED
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

View File

@ -1,2 +1,5 @@
[OPZIONI]
CONFSTRINGA =
DATA =
PERCORSO =

View File

@ -1,7 +1,385 @@
//NON riportare nulla!!!! Esiste dalla 4.0; qui e' solo un segnaposto
#include "tc9.h"
#include <applicat.h>
#include <automask.h>
#include <filetext.h>
#include "tc0.h"
#include "tc9200a.h"
#include <clifo.h>
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
#define ALIAS_REG 100
class TInvioS_file: public TFile_text
{
protected:
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
public:
TInvioS_file(const TString& file_name);
virtual ~TInvioS_file() { }
};
TInvioS_file::TInvioS_file(const TString& file_name)
: TFile_text(file_name, "tc9200a.ini")
{
}
class TInvioS_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TInvioS_mask();
virtual ~TInvioS_mask(){};
};
TInvioS_mask::TInvioS_mask() :TAutomask ("tc9200a")
{
}
bool TInvioS_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_CODDITTA:
if (e==fe_init && o.empty())
{
set(F_CODDITTA, main_app().get_firm());
((TEdit_field&) o).check();
disable(F_CODDITTA);
}
break;
default:
break;
}
return TRUE;
}
class TInvioS : public TSkeleton_application
{
TCursor* _cur;
TInvioS_mask* _msk;
TInvioS_file* _trasfile;
TConfig* _configfile;
TDate _dataini, _datafin;
protected:
virtual bool create(void);
virtual bool destroy(void);
virtual void main_loop() ;
void invio_sispac();
long i_sispac_clifor(const char* tipocf, const bool invio = TRUE);
long i_sispac_movcont(const bool invio = TRUE);
long i_sispac_moviva(const bool invio = TRUE);
public:
TInvioS_file* apri_file(const char* nome);
void chiudi_file(TInvioS_file* trasfile);
TConfig& config() {return *_configfile;};
TInvioS() {} ;
virtual ~TInvioS() {} ;
};
// restituisce un riferimento all' applicazione
inline TInvioS& app() { return (TInvioS&) main_app();}
// gestione dei messaggi estesi nei campi
void TInvioS_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
{
const TString code(s.get(0));
TString valore;
if (code == "_FISSO")
{
// gestione dei campi fissi per i record delle riba
// sintassi: _FISSO,!<valore>
// dove: <valore> è la stringa fissa da emettere
TString in(s.get());
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
in.ltrim(1);
in.trim();
valore = in;
}
else if (code == "_TIPORIGA")
{
valore = str.empty() ? " " : "S";
}
else if (code == "_CODPAG")
{
valore = app().config().get(str, "PAGAMENTI");
}
else if (code == "_OPZIONI")
{
TString in(s.get());
valore = app().config().get(in, "OPZIONI");
}
else if (code == "_IMPORTO")
{
real importo(str);
valore = importo.string(0,2);
valore.strip("-");
valore.strip("+");
valore.strip(".");
}
else if (code == "_IMPORTORIGAIVA")
{
real imponibile = cur.curr(LF_RMOVIVA).get_real(RMI_IMPONIBILE);;
real imposta = cur.curr(LF_RMOVIVA).get_real(RMI_IMPOSTA);;
imponibile += imposta;
valore = imposta.string(0,2);
valore.strip("-");
valore.strip("+");
valore.strip(".");
}
else if (code == "_INDIR")
{
valore = cur.curr(LF_CLIFO).get(CLI_INDCF);
valore << ' ' << cur.curr(LF_CLIFO).get(CLI_CIVCF);
valore.cut(40);
}
else if (code == "_GIUFIS")
{
const char c = str[0];
valore = (c == 'F') ? "S" : "N";
}
else if (code == "_TITOLARE")
{
valore = (str.empty() ? "N" : "S");
}
else if (code == "_TIPODET")
{
valore = (str.empty() ? " " : "100");
}
else if (code == "_CONTO")
{
int gruppo = cur.curr(LF_CLIFO).get_int(CLI_GRUPPO);
if (gruppo == 10)
gruppo = 0;
int conto = cur.curr(LF_CLIFO).get_int(CLI_CONTO);
long codice = cur.curr(LF_CLIFO).get_int(CLI_CODCF);
valore.format("%03d%03d%06ld", gruppo, conto, codice);
}
else if (code == "_CONTOMOV")
{
int gruppo = cur.curr(LF_RMOV).get_int(RMV_GRUPPO);
if (gruppo == 10)
gruppo = 0;
int conto = cur.curr(LF_RMOV).get_int(RMV_CONTO);
long codice = cur.curr(LF_RMOV).get_int(RMV_SOTTOCONTO);
valore.format("%03d%03d%06ld", gruppo, conto, codice);
}
else if (code == "_CONTOMOVIVA")
{
int gruppo = cur.curr(LF_RMOVIVA).get_int(RMI_GRUPPO);
if (gruppo == 10)
gruppo = 0;
int conto = cur.curr(LF_RMOVIVA).get_int(RMI_CONTO);
long codice = cur.curr(LF_RMOVIVA).get_int(RMI_SOTTOCONTO);
valore.format("%03d%03d%06ld", gruppo, conto, codice);
}
else NFCHECK("Macro non definita: %s", (const char *)code);
str = valore;
}
TInvioS_file* TInvioS::apri_file(const char* nome)
{
TFilename filename = _msk->get(F_DESTINAZIONE);
filename.add(nome);
filename.ext("txt");
if (filename.exist())
remove(filename);
TInvioS_file* trasfile = new TInvioS_file(filename);
trasfile->open(filename,'w');
trasfile->force_record_separator();
return trasfile;
}
void TInvioS::chiudi_file(TInvioS_file* trasfile)
{
trasfile->close();
delete trasfile;
}
long TInvioS::i_sispac_movcont(const bool invio)
{
TRectype da(LF_MOV);
TRectype a(LF_MOV);
TDate dataini = _msk->get_date(F_DATAINI);
TDate datafin = _msk->get_date(F_DATAFIN);
if (dataini.ok())
da.put(MOV_DATAREG, dataini);
if (datafin.ok())
a.put(MOV_DATAREG, datafin);
TRelation rel(LF_MOV);
rel.add(LF_RMOV, "NUMREG==NUMREG", 1);
rel.add(LF_CLIFO, "TIPOCF==TIPO|CODCF==CODCF", 1);
TCursor cur(&rel, "", 2, &da, &a);
const long cur_items = cur.items();
if (cur_items != 0)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
const long numreg = cur.curr().get_long(MOV_NUMREG);
bool continua = TRUE;
while (continua)
{
const long numregrig = cur.curr(LF_RMOV).get_long(RMV_NUMREG);
if (numreg == numregrig)
{
if (invio)
{
TRectype& cur_rec_righe = cur.curr(LF_RMOV);
TRecord_text recrighe;
recrighe.set_type("R");
_trasfile->autoload(recrighe, cur);
_trasfile->write(recrighe);
}
}
continua = cur.next_match(LF_RMOV, "NUMREG");
}
}
}
return 0;
}
long TInvioS::i_sispac_moviva(const bool invio)
{
TRectype da(LF_MOV);
TRectype a(LF_MOV);
da.put(MOV_DATAREG, _dataini);
a.put(MOV_DATAREG, _datafin);
TRelation rel(LF_MOV);
rel.add(LF_RMOVIVA, "NUMREG==NUMREG", 1);
rel.add("REG", "CODTAB[1,4]==ANNOIVA|CODTAB[5,7]==REG", 1);
rel.add(LF_CLIFO, "TIPOCF==TIPO|CODCF==CODCF", 1);
TCursor cur(&rel, "", 2, &da, &a);
const long cur_items = cur.items();
if (cur_items != 0)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
const long numreg = cur.curr().get_long(MOV_NUMREG);
bool continua = TRUE;
while (continua)
{
const long numregrig = cur.curr(LF_RMOVIVA).get_long(RMI_NUMREG);
if (numreg == numregrig)
{
if (invio)
{
TRectype& cur_rec_righe = cur.curr(LF_RMOVIVA);
TRecord_text recrighe;
recrighe.set_type("I");
_trasfile->autoload(recrighe, cur);
_trasfile->write(recrighe);
}
}
continua = cur.next_match(LF_RMOVIVA, "NUMREG");
}
}
}
return 0;
}
long TInvioS::i_sispac_clifor(const char* tipocf, const bool invio)
{
TString80 nomefile = "FILE";
nomefile << tipocf;
TInvioS_file* trasfilecf = apri_file(_configfile->get(nomefile, "OPZIONI"));
TRelation rel(LF_CLIFO);
rel.add(LF_COMUNI, "STATO==STATOCF|COM==COMCF", 1);
rel.add(LF_ANAGFIS,"CODANAGR==CODANAGPER", 1);
rel.add(LF_ANAG,"TIPOA==TIPOPERS|CODANAGR==CODANAGPER", 1);
TString80 filtro;
filtro = "20->TIPOCF == \"";
filtro << tipocf;
filtro << "\"";
TCursor cur(&rel);
cur.setfilter(filtro, TRUE);
const long cur_items = cur.items();
if (cur_items != 0 && invio)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
TRecord_text rec;
rec.set_type(tipocf);
trasfilecf->autoload(rec, cur);
trasfilecf->write(rec);
}
}
chiudi_file(trasfilecf);
return 0;
}
//metodone globale che chiama, come un menu, i vari sottometodi in base alle scelte sulla maschera
void TInvioS::invio_sispac()
{
if (_msk->get_bool(F_CLIFOR))
{
i_sispac_clifor("C");
i_sispac_clifor("F");
}
if (_msk->get_bool(F_MOVCONT))
{
TString80 filename = _configfile->get("FILEM", "OPZIONI");
_trasfile = apri_file(filename);
i_sispac_movcont();
i_sispac_moviva();
chiudi_file(_trasfile);
}
}
bool TInvioS::create()
{
_msk = new TInvioS_mask();
TFilename configname = "tc9200conf.ini";
configname.custom_path();
_configfile = new TConfig(configname);
return TSkeleton_application::create();
}
bool TInvioS::destroy()
{
delete _configfile;
delete _msk;
return TSkeleton_application::destroy();
}
void TInvioS::main_loop()
{
_msk->set(F_NUMEROINVIO, _configfile->get_int("NUMEROINVIO","OPZIONI")+1);
_msk->set(F_DATAINI, _configfile->get("DATA","OPZIONI"));
_msk->set(F_DESTINAZIONE, _configfile->get("PERCORSO","OPZIONI"));
while (_msk->run() != K_QUIT)
{
_configfile->set("NUMEROINVIO", _msk->get(F_NUMEROINVIO),"OPZIONI");
_configfile->set("DATA", _msk->get_date(F_DATAFIN),"OPZIONI");
_configfile->set("PERCORSO", _msk->get(F_DESTINAZIONE),"OPZIONI");
_configfile->set_paragraph("PAGAMENTI");
_dataini = _msk->get_date(F_DATAINI);
_datafin = _msk->get_date(F_DATAFIN);
const char tipoinvio = _msk->get(F_TIPOINVIO)[0];
if (tipoinvio == 'S')
invio_sispac();
}
}
int tc9200(int argc, char **argv)
{
return 0;
TInvioS a;
a.run(argc, argv, "Invio dati contabilità Sispac/Cosmo");
return 0;
}

View File

@ -5,6 +5,8 @@ Module = 27
Flags = ""
Item_01 = "TeamSystem", [TCMENU_002]
Item_02 = "Zucchetti", "tc1 -0", ""
Item_03 = "Proforma", "tc9 -0", ""
Item_04 = "Sispac/Cosmo", "tc9 -1", ""
[TCMENU_002]
Caption = "TeamSystem"