Embrioni disseccati e scheletrici di sc2, stampa speranzosa degli
estratti conto git-svn-id: svn://10.65.10.50/trunk@2093 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
80ecf677c5
commit
6f39d41a3e
44
sc/sc0.cpp
44
sc/sc0.cpp
@ -1,22 +1,22 @@
|
||||
#include <xvt.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <checks.h>
|
||||
|
||||
#include "sc0.h"
|
||||
|
||||
#define usage "Errore - uso : sc0 -{0}"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
sc0100(argc,argv); break;
|
||||
default:
|
||||
error_box(usage);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#include <xvt.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <checks.h>
|
||||
|
||||
#include "sc0.h"
|
||||
|
||||
#define usage "Errore - uso : sc0 -{0}"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
sc0100(argc,argv); break;
|
||||
default:
|
||||
error_box(usage);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
108
sc/sc0100.cpp
108
sc/sc0100.cpp
@ -1,55 +1,55 @@
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <mask.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "sc0100.h"
|
||||
|
||||
bool TSaldaconto_app::create()
|
||||
{
|
||||
open_files(LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
_msk = new TMask("sc0100a");
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TSaldaconto_app::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
close_files();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TSaldaconto_app::open_files(int logicnum, ...)
|
||||
{
|
||||
va_list marker;
|
||||
va_start(marker, logicnum);
|
||||
while (logicnum > 0)
|
||||
{
|
||||
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
|
||||
_file.add(new TLocalisamfile(logicnum), logicnum);
|
||||
logicnum = va_arg(marker, int);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TSaldaconto_app::menu(MENU_TAG)
|
||||
{
|
||||
KEY k;
|
||||
TMask& m = curr_mask();
|
||||
|
||||
do
|
||||
{
|
||||
k = m.run();
|
||||
if (k == K_ENTER)
|
||||
edit_partite(m);
|
||||
} while (k != K_QUIT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sc0100(int argc, char* argv[])
|
||||
{
|
||||
TSaldaconto_app app;
|
||||
app.run(argc, argv, "Gestione Saldaconto");
|
||||
return 0;
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <mask.h>
|
||||
#include <urldefid.h>
|
||||
|
||||
#include "sc0100.h"
|
||||
|
||||
bool TSaldaconto_app::create()
|
||||
{
|
||||
open_files(LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||
_msk = new TMask("sc0100a");
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TSaldaconto_app::destroy()
|
||||
{
|
||||
delete _msk;
|
||||
close_files();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TSaldaconto_app::open_files(int logicnum, ...)
|
||||
{
|
||||
va_list marker;
|
||||
va_start(marker, logicnum);
|
||||
while (logicnum > 0)
|
||||
{
|
||||
CHECKD(_file.objptr(logicnum) == NULL, "File gia' aperto: ", logicnum);
|
||||
_file.add(new TLocalisamfile(logicnum), logicnum);
|
||||
logicnum = va_arg(marker, int);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool TSaldaconto_app::menu(MENU_TAG)
|
||||
{
|
||||
KEY k;
|
||||
TMask& m = curr_mask();
|
||||
|
||||
do
|
||||
{
|
||||
k = m.run();
|
||||
if (k == K_ENTER)
|
||||
edit_partite(m);
|
||||
} while (k != K_QUIT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sc0100(int argc, char* argv[])
|
||||
{
|
||||
TSaldaconto_app app;
|
||||
app.run(argc, argv, "Gestione Saldaconto");
|
||||
return 0;
|
||||
}
|
88
sc/sc0100.h
88
sc/sc0100.h
@ -1,44 +1,44 @@
|
||||
#ifndef __SC100_H
|
||||
#define __SC100_H
|
||||
|
||||
#ifndef __APPLICAT_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __SALDACON_H
|
||||
#include "../cg/saldacon.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
class TMask;
|
||||
#endif
|
||||
|
||||
class TSaldaconto_app : public TApplication
|
||||
{
|
||||
TMask* _msk;
|
||||
TArray _file;
|
||||
|
||||
TPartite_array _partite;
|
||||
|
||||
protected: // TApplication
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG tag);
|
||||
|
||||
protected:
|
||||
void open_files(int logicnum, ...);
|
||||
void close_files() { _file.destroy(); }
|
||||
|
||||
void edit_partite(const TMask& m);
|
||||
|
||||
public:
|
||||
TMask& curr_mask() { return *_msk; }
|
||||
TPartite_array& partite() { return _partite; }
|
||||
|
||||
TSaldaconto_app() : _file(32) {}
|
||||
virtual ~TSaldaconto_app() {}
|
||||
};
|
||||
|
||||
inline TSaldaconto_app& app() { return (TSaldaconto_app&)main_app(); }
|
||||
|
||||
#endif
|
||||
#ifndef __SC100_H
|
||||
#define __SC100_H
|
||||
|
||||
#ifndef __APPLICAT_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __SALDACON_H
|
||||
#include "../cg/saldacon.h"
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
class TMask;
|
||||
#endif
|
||||
|
||||
class TSaldaconto_app : public TApplication
|
||||
{
|
||||
TMask* _msk;
|
||||
TArray _file;
|
||||
|
||||
TPartite_array _partite;
|
||||
|
||||
protected: // TApplication
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG tag);
|
||||
|
||||
protected:
|
||||
void open_files(int logicnum, ...);
|
||||
void close_files() { _file.destroy(); }
|
||||
|
||||
void edit_partite(const TMask& m);
|
||||
|
||||
public:
|
||||
TMask& curr_mask() { return *_msk; }
|
||||
TPartite_array& partite() { return _partite; }
|
||||
|
||||
TSaldaconto_app() : _file(32) {}
|
||||
virtual ~TSaldaconto_app() {}
|
||||
};
|
||||
|
||||
inline TSaldaconto_app& app() { return (TSaldaconto_app&)main_app(); }
|
||||
|
||||
#endif
|
||||
|
24
sc/sc0100a.h
24
sc/sc0100a.h
@ -1,13 +1,13 @@
|
||||
#define F_TIPO 101
|
||||
#define F_GRUPPO 102
|
||||
#define F_CONTO 103
|
||||
#define F_SOTTOCONTO 104
|
||||
#define F_CLIENTE 204
|
||||
#define F_FORNITORE 304
|
||||
#define F_DESCR 105
|
||||
#define F_DESCRCLI 205
|
||||
#define F_DESCRFOR 305
|
||||
#define F_FATPAG 106
|
||||
#define F_ANNO 107
|
||||
#define F_NUMERO 108
|
||||
#define F_TIPO 101
|
||||
#define F_GRUPPO 102
|
||||
#define F_CONTO 103
|
||||
#define F_SOTTOCONTO 104
|
||||
#define F_CLIENTE 204
|
||||
#define F_FORNITORE 304
|
||||
#define F_DESCR 105
|
||||
#define F_DESCRCLI 205
|
||||
#define F_DESCRFOR 305
|
||||
#define F_FATPAG 106
|
||||
#define F_ANNO 107
|
||||
#define F_NUMERO 108
|
||||
#define F_RIGA 109
|
316
sc/sc0100a.uml
316
sc/sc0100a.uml
@ -1,158 +1,158 @@
|
||||
#include "sc0100a.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione partite" -1 -1 77 20
|
||||
|
||||
LIST F_TIPO 1 12
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo conto "
|
||||
ITEM " |Conto"
|
||||
MESSAGE SHOW,1@|RESET,1@|HIDE,2@|HIDE,3@
|
||||
ITEM "C|Cliente"
|
||||
MESSAGE HIDE,1@|SHOW,2@|RESET,2@|HIDE,3@
|
||||
ITEM "F|Fornitore"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|RESET,3@
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 26 1 "Gruppo "
|
||||
USE LF_PCON SELECT CONTO==""
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
NUMBER F_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 40 1 "Conto "
|
||||
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
INPUT CONTO F_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT F_TIPO TMCF
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
OUTPUT F_CONTO CONTO
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Sottoconto "
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
COPY INPUT F_CONTO
|
||||
INPUT SOTTOCONTO F_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT F_DESCR DESCR
|
||||
ADD RUN cg0 -0
|
||||
GROUP 1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Cliente "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF F_CLIENTE
|
||||
DISPLAY "Cliente" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
// OUTPUT F_GRUPPO GRUPPO
|
||||
// OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_CLIENTE CODCF
|
||||
OUTPUT F_DESCRCLI RAGSOC
|
||||
ADD RUN cg0 -1 C
|
||||
GROUP 2
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_SOTTOCONTO
|
||||
END
|
||||
|
||||
NUMBER F_FORNITORE 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Fornitore "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_FORNITORE
|
||||
DISPLAY "Fornitore" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
// OUTPUT F_GRUPPO GRUPPO
|
||||
// OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_DESCRFOR RAGSOC
|
||||
ADD RUN cg0 -1 F
|
||||
GROUP 3
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_SOTTOCONTO
|
||||
END
|
||||
|
||||
STRING F_DESCR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR F_DESCR
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SOTTOCONTO
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 1
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
STRING F_DESCRCLI 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC F_DESCRCLI
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_DESCRFOR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC F_DESCRFOR
|
||||
COPY DISPLAY F_DESCRCLI
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 3
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
ENDMASK
|
||||
#include "sc0100a.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Selezione partite" -1 -1 77 20
|
||||
|
||||
LIST F_TIPO 1 12
|
||||
BEGIN
|
||||
PROMPT 1 1 "Tipo conto "
|
||||
ITEM " |Conto"
|
||||
MESSAGE SHOW,1@|RESET,1@|HIDE,2@|HIDE,3@
|
||||
ITEM "C|Cliente"
|
||||
MESSAGE HIDE,1@|SHOW,2@|RESET,2@|HIDE,3@
|
||||
ITEM "F|Fornitore"
|
||||
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@|RESET,3@
|
||||
END
|
||||
|
||||
NUMBER F_GRUPPO 3
|
||||
BEGIN
|
||||
PROMPT 26 1 "Gruppo "
|
||||
USE LF_PCON SELECT CONTO==""
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
NUMBER F_CONTO 3
|
||||
BEGIN
|
||||
PROMPT 40 1 "Conto "
|
||||
USE LF_PCON SELECT (CONTO!="")&&(SOTTOCONTO="")
|
||||
INPUT GRUPPO F_GRUPPO
|
||||
INPUT CONTO F_CONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Tipo" TMCF
|
||||
OUTPUT F_TIPO TMCF
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
OUTPUT F_CONTO CONTO
|
||||
CHECKTYPE REQUIRED
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
NUMBER F_SOTTOCONTO 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Sottoconto "
|
||||
USE LF_PCON SELECT SOTTOCONTO!=""
|
||||
COPY INPUT F_CONTO
|
||||
INPUT SOTTOCONTO F_SOTTOCONTO
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
OUTPUT F_GRUPPO GRUPPO
|
||||
OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_SOTTOCONTO SOTTOCONTO
|
||||
OUTPUT F_DESCR DESCR
|
||||
ADD RUN cg0 -0
|
||||
GROUP 1
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_CLIENTE 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Cliente "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "C"
|
||||
INPUT CODCF F_CLIENTE
|
||||
DISPLAY "Cliente" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
// OUTPUT F_GRUPPO GRUPPO
|
||||
// OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_CLIENTE CODCF
|
||||
OUTPUT F_DESCRCLI RAGSOC
|
||||
ADD RUN cg0 -1 C
|
||||
GROUP 2
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_SOTTOCONTO
|
||||
END
|
||||
|
||||
NUMBER F_FORNITORE 6
|
||||
BEGIN
|
||||
PROMPT 54 1 "Fornitore "
|
||||
USE LF_CLIFO
|
||||
INPUT TIPOCF "F"
|
||||
INPUT CODCF F_FORNITORE
|
||||
DISPLAY "Fornitore" CODCF
|
||||
DISPLAY "Descrizione@50" RAGSOC
|
||||
// OUTPUT F_GRUPPO GRUPPO
|
||||
// OUTPUT F_CONTO CONTO
|
||||
OUTPUT F_FORNITORE CODCF
|
||||
OUTPUT F_DESCRFOR RAGSOC
|
||||
ADD RUN cg0 -1 F
|
||||
GROUP 3
|
||||
CHECKTYPE REQUIRED
|
||||
MESSAGE COPY,F_SOTTOCONTO
|
||||
END
|
||||
|
||||
STRING F_DESCR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
INPUT DESCR F_DESCR
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" SOTTOCONTO
|
||||
COPY OUTPUT F_SOTTOCONTO
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 1
|
||||
ADD RUN cg0 -0
|
||||
END
|
||||
|
||||
STRING F_DESCRCLI 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_CLIFO KEY 2
|
||||
INPUT TIPOCF "C"
|
||||
INPUT RAGSOC F_DESCRCLI
|
||||
DISPLAY "Gruppo" GRUPPO
|
||||
DISPLAY "Conto" CONTO
|
||||
DISPLAY "Sottoconto" CODCF
|
||||
DISPLAY "Ragione sociale@50" RAGSOC
|
||||
COPY OUTPUT F_CLIENTE
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 2
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
STRING F_DESCRFOR 50 58
|
||||
BEGIN
|
||||
PROMPT 1 2 "Descrizione "
|
||||
USE LF_PCON KEY 2
|
||||
INPUT TIPOCF "F"
|
||||
INPUT RAGSOC F_DESCRFOR
|
||||
COPY DISPLAY F_DESCRCLI
|
||||
COPY OUTPUT F_FORNITORE
|
||||
CHECKTYPE REQUIRED
|
||||
GROUP 3
|
||||
ADD RUN cg0 -1
|
||||
END
|
||||
|
||||
ENDMASK
|
||||
|
@ -1,21 +1,21 @@
|
||||
#include "../cg/cg21sld.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
#include "../cg/cg21sld.uml"
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include "../cg/cg21rata.uml"
|
||||
#include "../cg/cg21sld.h"
|
||||
|
||||
TOOLBAR "" 0 20 0 2
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
#include "../cg/cg21sld.uml"
|
||||
|
||||
ENDMASK
|
||||
|
||||
#include "../cg/cg21rata.uml"
|
||||
|
834
sc/sc0101.cpp
834
sc/sc0101.cpp
@ -1,417 +1,417 @@
|
||||
#include "../cg/conto.h"
|
||||
#include "../cg/pagament.h"
|
||||
#include "../cg/saldacon.h"
|
||||
#include "../cg/cg21sld.h"
|
||||
|
||||
#include "sc0100.h"
|
||||
#include "sc0100a.h"
|
||||
|
||||
#define __EXTRA__
|
||||
#include "../cg/cg2105.cpp"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera gestione rate
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TFattura_mask : public TMask
|
||||
{
|
||||
TRiga_partite& _fattura;
|
||||
TPagamento* _pag;
|
||||
TString_array _pag_rows;
|
||||
|
||||
protected: // TMask
|
||||
virtual void start_run();
|
||||
virtual bool stop_run(KEY k);
|
||||
|
||||
protected:
|
||||
static bool pag_notify(TSheet_field& ps, int r, KEY k);
|
||||
static bool pag_handler(TMask_field& f, KEY key);
|
||||
static bool reset_handler(TMask_field& f, KEY key);
|
||||
static bool recalc_handler(TMask_field& f, KEY key);
|
||||
static bool nrate_handler(TMask_field& f, KEY key);
|
||||
static bool codcab_handler(TMask_field& f, KEY key);
|
||||
|
||||
TSheet_field& pag_sheet() const { return (TSheet_field&)field(FS_RATESHEET); }
|
||||
|
||||
void read_scadenze();
|
||||
void write_scadenze() const;
|
||||
|
||||
public:
|
||||
TFattura_mask(TRiga_partite& fattura, const TString& codpag);
|
||||
virtual ~TFattura_mask() {}
|
||||
};
|
||||
|
||||
TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag)
|
||||
: TMask("sc0100b"), _fattura(fattura), _pag(NULL)
|
||||
{
|
||||
set_handler(FS_RESET, reset_handler);
|
||||
set_handler(FS_RECALC, recalc_handler);
|
||||
set_handler(FS_NRATE, nrate_handler);
|
||||
set_handler(FS_NSCAB, codcab_handler);
|
||||
set_handler(FS_VSCAB, codcab_handler);
|
||||
|
||||
pag_sheet().set_notify(pag_notify);
|
||||
pag_sheet().set_handler(pag_handler);
|
||||
|
||||
const TRiga_partite& partita = _fattura;
|
||||
const TString16 datadoc = partita.get(PART_DATADOC);
|
||||
_pag = new TPagamento(codpag, datadoc);
|
||||
}
|
||||
|
||||
void TFattura_mask::start_run()
|
||||
{
|
||||
read_scadenze();
|
||||
}
|
||||
|
||||
bool TFattura_mask::stop_run(KEY k)
|
||||
{
|
||||
const bool ok = TMask::stop_run(k);
|
||||
if (ok && k == K_ENTER)
|
||||
write_scadenze();
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
{
|
||||
if (k == K_INS || k == K_DEL)
|
||||
return FALSE;
|
||||
if (k != K_ENTER)
|
||||
return TRUE;
|
||||
|
||||
TFattura_mask& fm = (TFattura_mask&)ps.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
TString_array& rws = fm._pag_rows;
|
||||
|
||||
const int rdiff = fm.get_int(FS_RDIFFER);
|
||||
const bool in_valuta = pag.in_valuta();
|
||||
const int impos = in_valuta ? 2 : 1;
|
||||
|
||||
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE;
|
||||
bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE;
|
||||
word ahiahi = P_OK;
|
||||
|
||||
const bool recalc = fm.get_bool(FS_RECALC);
|
||||
const bool mcomm = fm.get_bool(FS_MCOMM);
|
||||
|
||||
TToken_string ns = ps.row(r);
|
||||
TToken_string ts = rws.row(r);
|
||||
|
||||
const TString news = ns.get(0); // Data scadenza
|
||||
const TString newi = ns.get(impos); // Imponibile (lire o valuta)
|
||||
const TString newp = ns.get(3); // Percentuale
|
||||
const TString newt = ns.get(4); // Tipo pagamento
|
||||
|
||||
// qui viene il bello, si fa per dire
|
||||
if (news != ts.get(0)) // modificata data scadenza
|
||||
mod = m_scad = TRUE;
|
||||
if (newp != ts.get(3)) // modificata percentuale
|
||||
mod = m_perc = TRUE;
|
||||
if (newi != ts.get(impos)) // modificato importo
|
||||
{
|
||||
// se si modifica la percentuale l'importo non viene cagato
|
||||
if ((recalc && !m_perc) || (!recalc))
|
||||
mod = m_imp = TRUE;
|
||||
}
|
||||
if (newt != ts.get(4)) // modificato tipo pagamento
|
||||
mod = m_tipo = TRUE;
|
||||
|
||||
|
||||
// settato da recalc_rate se occorre ridefinire lo sheet
|
||||
// aggiungendo o togliendo righe
|
||||
bool need_recalc = FALSE;
|
||||
|
||||
if (mod && recalc)
|
||||
{
|
||||
// ricalcola sheet come sai fare tu
|
||||
ahiahi = pag.recalc_rate(r, m_perc,
|
||||
((m_perc || m_imp) ?
|
||||
(m_perc ? (const char*)newp : (const char*)newi) :
|
||||
NULL),
|
||||
(m_scad ? (const char*)news : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
rdiff, mcomm, need_recalc);
|
||||
// see if rdiff changed
|
||||
fm.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
fm.set(FS_NRATE, pag.n_rate());
|
||||
}
|
||||
if (!recalc)
|
||||
{
|
||||
ahiahi = P_OK;
|
||||
// put data as they are
|
||||
TToken_string& trw = pag.rata(r);
|
||||
TToken_string srw = trw;
|
||||
if (m_tipo) trw.add(newt,2);
|
||||
if (m_scad) trw.add(news,3);
|
||||
if (m_imp)
|
||||
{
|
||||
trw.add(newi,4);
|
||||
const real p = pag.recalc_percrata(r);
|
||||
ps.row(r).add(p.string(), 3);
|
||||
rws.row(r) = ps.row(r);
|
||||
ps.force_update(r);
|
||||
}
|
||||
}
|
||||
if (ahiahi) // any error? Rimetti le righe com'erano prima
|
||||
{
|
||||
if (recalc)
|
||||
{
|
||||
beep();
|
||||
ps.row(r) = rws.row(r);
|
||||
ps.force_update(r);
|
||||
}
|
||||
}
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// ridefinisci lo sheet sulla base delle nuove rate
|
||||
pag.set_sheet(ps);
|
||||
rws = ps.rows_array();
|
||||
}
|
||||
|
||||
return doit;
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB || key == K_ENTER)
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
const word err = pag.validate();
|
||||
if (err != P_OK)
|
||||
{
|
||||
TString256 s;
|
||||
pag.strerr(err, s);
|
||||
return error_box(s);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::reset_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
if (fm._fattura.rate() == 0)
|
||||
fm._pag->read();
|
||||
fm.read_scadenze();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::recalc_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
const bool on = f.get().not_empty();
|
||||
const TMask& m = f.mask();
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
ps.enable_column(3, on);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::nrate_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
|
||||
pag.set_numero_rate(atoi(f.get()));
|
||||
if (pag.dirty())
|
||||
{
|
||||
TSheet_field& ps = (TSheet_field&)fm.field(FS_RATESHEET);
|
||||
pag.set_sheet(ps);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::codcab_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const short id = f.dlg() == FS_NSCAB ? FS_NSABI : FS_VSABI;
|
||||
const int pos = id == FS_NSABI ? 6 : 8;
|
||||
const TString16 abi = m.get(id);
|
||||
const TString16 cab = m.get(id+1);
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
for (int i = ps.items()-1; i >= 0; i--)
|
||||
{
|
||||
TToken_string& row = ps.row(i);
|
||||
row.add(abi, pos);
|
||||
row.add(cab, pos+1);
|
||||
}
|
||||
ps.force_update();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TFattura_mask::read_scadenze()
|
||||
{
|
||||
TRiga_partite& partita = _fattura;
|
||||
TPagamento& pag = *_pag;
|
||||
TSheet_field& ps = pag_sheet();
|
||||
|
||||
real imponibile, imposte, spese, cambio;
|
||||
|
||||
if (partita.in_valuta())
|
||||
{
|
||||
imponibile = partita.get_real(PART_IMPORTOVAL);
|
||||
cambio = partita.get_real(PART_CAMBIO);
|
||||
|
||||
real imp = imponibile;
|
||||
imp *= cambio;
|
||||
imp.round();
|
||||
set(FS_IMPONIBILI, imp);
|
||||
}
|
||||
else
|
||||
{
|
||||
imponibile = partita.get_real(PART_IMPORTO);
|
||||
set(FS_IMPONIBILI, imponibile);
|
||||
}
|
||||
|
||||
pag.set_total(imponibile, imposte, spese);
|
||||
pag.set_cambio(cambio);
|
||||
|
||||
if (partita.rate() > 0)
|
||||
{
|
||||
pag.zap_rate();
|
||||
for (int i = 1; i <= partita.rate(); i++)
|
||||
{
|
||||
const TRiga_scadenze& scadenza = partita.rata(i);
|
||||
real importo = scadenza.get(SCAD_IMPORTO);
|
||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
if (scadenza.in_valuta())
|
||||
{
|
||||
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
||||
pag.set_rata(i-1, impval, importo, scad, tipop, ulc, paid);
|
||||
}
|
||||
else
|
||||
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid);
|
||||
|
||||
TToken_string& str = ps.row(i-1);
|
||||
str.add(scadenza.get(SCAD_CODABIPR), 6);
|
||||
str.add(scadenza.get(SCAD_CODCABPR), 7);
|
||||
str.add(scadenza.get(SCAD_CODABI), 8);
|
||||
str.add(scadenza.get(SCAD_CODCAB), 9);
|
||||
if (i == 1)
|
||||
{
|
||||
set(FS_NSABI, str.get(6));
|
||||
set(FS_NSCAB, str.get(7));
|
||||
set(FS_VSABI, str.get(8));
|
||||
set(FS_VSCAB, str.get(9));
|
||||
set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
pag.set_rate_auto();
|
||||
}
|
||||
|
||||
set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
set(FS_NAMEPAG, pag.name());
|
||||
set(FS_TIPOPR, pag.desc_tpr());
|
||||
set(FS_MCOMM, pag.mese_commerciale() ? "X" : "");
|
||||
set(FS_RECALC, "X", TRUE);
|
||||
set(FS_NRATE, pag.n_rate());
|
||||
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
|
||||
// se la prima rata e' fissa non si tocca
|
||||
if (pag.tipo_prima_rata() > 3)
|
||||
ps.disable_cell(0,-1);
|
||||
}
|
||||
|
||||
void TFattura_mask::write_scadenze() const
|
||||
{
|
||||
CHECK(_pag, "Null pagament");
|
||||
const TPagamento& pag = *_pag;
|
||||
TRiga_partite& partita = _fattura;
|
||||
|
||||
TSheet_field& ps = pag_sheet();
|
||||
|
||||
const TString agente = get(FS_AGENTE);
|
||||
|
||||
partita.elimina_rate();
|
||||
for (int i = 0; i < pag.n_rate(); i++)
|
||||
{
|
||||
TToken_string& row = ps.row(i);
|
||||
|
||||
TRiga_scadenze& scadenza = partita.new_row();
|
||||
scadenza.put(SCAD_CODPAG, pag.code());
|
||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
||||
if (partita.in_valuta())
|
||||
{
|
||||
scadenza.put(SCAD_IMPORTO, pag.tlit_rata(i));
|
||||
scadenza.put(SCAD_IMPORTOVAL, pag.tpay_rata(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
scadenza.put(SCAD_IMPORTO, pag.tpay_rata(i));
|
||||
scadenza.zero(SCAD_IMPORTOVAL);
|
||||
}
|
||||
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
||||
scadenza.put(SCAD_CODABIPR, row.get(6));
|
||||
scadenza.put(SCAD_CODCABPR, row.get(7));
|
||||
scadenza.put(SCAD_CODABI, row.get(8));
|
||||
scadenza.put(SCAD_CODCAB, row.get(9));
|
||||
scadenza.put(SCAD_PAGATA, pag.ratapagata(i));
|
||||
scadenza.put(SCAD_CODAG, agente);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Addendum alla maschera gestione partite
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TGame_mask::edit_fattura(TPartita& p, int nriga)
|
||||
{
|
||||
TString16 codpag;
|
||||
|
||||
const bool nuova = nriga <= 0;
|
||||
if (nuova)
|
||||
nriga = nuova_riga(p);
|
||||
|
||||
TRiga_partite& f = p.riga(nriga);
|
||||
if (f.rate() > 0)
|
||||
_codpag = f.rata(1).get(SCAD_CODPAG);
|
||||
|
||||
TFattura_mask fm(f, _codpag);
|
||||
const bool ok = fm.run() == K_ENTER;
|
||||
|
||||
if (nuova && !ok)
|
||||
p.rimuovi_riga(nriga);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Gestione partite extra-contabili
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
void TSaldaconto_app::edit_partite(const TMask& m)
|
||||
{
|
||||
TBill b; // Legge il conto della riga selezionata
|
||||
b.set(m.get_int(F_GRUPPO), m.get_int(F_CONTO),
|
||||
m.get_long(F_SOTTOCONTO), m.get(F_TIPO)[0]);
|
||||
|
||||
TGame_mask gm(b, 0, 0);
|
||||
gm.run();
|
||||
if (gm.changed() && yesno_box("Si vogliono salvare le partite modificate?"))
|
||||
partite().rewrite();
|
||||
partite().destroy();
|
||||
}
|
||||
|
||||
#include "../cg/conto.h"
|
||||
#include "../cg/pagament.h"
|
||||
#include "../cg/saldacon.h"
|
||||
#include "../cg/cg21sld.h"
|
||||
|
||||
#include "sc0100.h"
|
||||
#include "sc0100a.h"
|
||||
|
||||
#define __EXTRA__
|
||||
#include "../cg/cg2105.cpp"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Maschera gestione rate
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TFattura_mask : public TMask
|
||||
{
|
||||
TRiga_partite& _fattura;
|
||||
TPagamento* _pag;
|
||||
TString_array _pag_rows;
|
||||
|
||||
protected: // TMask
|
||||
virtual void start_run();
|
||||
virtual bool stop_run(KEY k);
|
||||
|
||||
protected:
|
||||
static bool pag_notify(TSheet_field& ps, int r, KEY k);
|
||||
static bool pag_handler(TMask_field& f, KEY key);
|
||||
static bool reset_handler(TMask_field& f, KEY key);
|
||||
static bool recalc_handler(TMask_field& f, KEY key);
|
||||
static bool nrate_handler(TMask_field& f, KEY key);
|
||||
static bool codcab_handler(TMask_field& f, KEY key);
|
||||
|
||||
TSheet_field& pag_sheet() const { return (TSheet_field&)field(FS_RATESHEET); }
|
||||
|
||||
void read_scadenze();
|
||||
void write_scadenze() const;
|
||||
|
||||
public:
|
||||
TFattura_mask(TRiga_partite& fattura, const TString& codpag);
|
||||
virtual ~TFattura_mask() {}
|
||||
};
|
||||
|
||||
TFattura_mask::TFattura_mask(TRiga_partite& fattura, const TString& codpag)
|
||||
: TMask("sc0100b"), _fattura(fattura), _pag(NULL)
|
||||
{
|
||||
set_handler(FS_RESET, reset_handler);
|
||||
set_handler(FS_RECALC, recalc_handler);
|
||||
set_handler(FS_NRATE, nrate_handler);
|
||||
set_handler(FS_NSCAB, codcab_handler);
|
||||
set_handler(FS_VSCAB, codcab_handler);
|
||||
|
||||
pag_sheet().set_notify(pag_notify);
|
||||
pag_sheet().set_handler(pag_handler);
|
||||
|
||||
const TRiga_partite& partita = _fattura;
|
||||
const TString16 datadoc = partita.get(PART_DATADOC);
|
||||
_pag = new TPagamento(codpag, datadoc);
|
||||
}
|
||||
|
||||
void TFattura_mask::start_run()
|
||||
{
|
||||
read_scadenze();
|
||||
}
|
||||
|
||||
bool TFattura_mask::stop_run(KEY k)
|
||||
{
|
||||
const bool ok = TMask::stop_run(k);
|
||||
if (ok && k == K_ENTER)
|
||||
write_scadenze();
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_notify(TSheet_field& ps, int r, KEY k)
|
||||
{
|
||||
if (k == K_INS || k == K_DEL)
|
||||
return FALSE;
|
||||
if (k != K_ENTER)
|
||||
return TRUE;
|
||||
|
||||
TFattura_mask& fm = (TFattura_mask&)ps.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
TString_array& rws = fm._pag_rows;
|
||||
|
||||
const int rdiff = fm.get_int(FS_RDIFFER);
|
||||
const bool in_valuta = pag.in_valuta();
|
||||
const int impos = in_valuta ? 2 : 1;
|
||||
|
||||
bool doit = TRUE, m_imp = FALSE, m_perc = FALSE, m_pag = FALSE;
|
||||
bool m_scad = FALSE, m_tipo = FALSE, mod = FALSE;
|
||||
word ahiahi = P_OK;
|
||||
|
||||
const bool recalc = fm.get_bool(FS_RECALC);
|
||||
const bool mcomm = fm.get_bool(FS_MCOMM);
|
||||
|
||||
TToken_string ns = ps.row(r);
|
||||
TToken_string ts = rws.row(r);
|
||||
|
||||
const TString news = ns.get(0); // Data scadenza
|
||||
const TString newi = ns.get(impos); // Imponibile (lire o valuta)
|
||||
const TString newp = ns.get(3); // Percentuale
|
||||
const TString newt = ns.get(4); // Tipo pagamento
|
||||
|
||||
// qui viene il bello, si fa per dire
|
||||
if (news != ts.get(0)) // modificata data scadenza
|
||||
mod = m_scad = TRUE;
|
||||
if (newp != ts.get(3)) // modificata percentuale
|
||||
mod = m_perc = TRUE;
|
||||
if (newi != ts.get(impos)) // modificato importo
|
||||
{
|
||||
// se si modifica la percentuale l'importo non viene cagato
|
||||
if ((recalc && !m_perc) || (!recalc))
|
||||
mod = m_imp = TRUE;
|
||||
}
|
||||
if (newt != ts.get(4)) // modificato tipo pagamento
|
||||
mod = m_tipo = TRUE;
|
||||
|
||||
|
||||
// settato da recalc_rate se occorre ridefinire lo sheet
|
||||
// aggiungendo o togliendo righe
|
||||
bool need_recalc = FALSE;
|
||||
|
||||
if (mod && recalc)
|
||||
{
|
||||
// ricalcola sheet come sai fare tu
|
||||
ahiahi = pag.recalc_rate(r, m_perc,
|
||||
((m_perc || m_imp) ?
|
||||
(m_perc ? (const char*)newp : (const char*)newi) :
|
||||
NULL),
|
||||
(m_scad ? (const char*)news : NULL),
|
||||
(m_tipo ? (const char*)newt : NULL),
|
||||
rdiff, mcomm, need_recalc);
|
||||
// see if rdiff changed
|
||||
fm.set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
fm.set(FS_NRATE, pag.n_rate());
|
||||
}
|
||||
if (!recalc)
|
||||
{
|
||||
ahiahi = P_OK;
|
||||
// put data as they are
|
||||
TToken_string& trw = pag.rata(r);
|
||||
TToken_string srw = trw;
|
||||
if (m_tipo) trw.add(newt,2);
|
||||
if (m_scad) trw.add(news,3);
|
||||
if (m_imp)
|
||||
{
|
||||
trw.add(newi,4);
|
||||
const real p = pag.recalc_percrata(r);
|
||||
ps.row(r).add(p.string(), 3);
|
||||
rws.row(r) = ps.row(r);
|
||||
ps.force_update(r);
|
||||
}
|
||||
}
|
||||
if (ahiahi) // any error? Rimetti le righe com'erano prima
|
||||
{
|
||||
if (recalc)
|
||||
{
|
||||
beep();
|
||||
ps.row(r) = rws.row(r);
|
||||
ps.force_update(r);
|
||||
}
|
||||
}
|
||||
else if (recalc && mod && need_recalc)
|
||||
{
|
||||
// ridefinisci lo sheet sulla base delle nuove rate
|
||||
pag.set_sheet(ps);
|
||||
rws = ps.rows_array();
|
||||
}
|
||||
|
||||
return doit;
|
||||
}
|
||||
|
||||
bool TFattura_mask::pag_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB || key == K_ENTER)
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
const word err = pag.validate();
|
||||
if (err != P_OK)
|
||||
{
|
||||
TString256 s;
|
||||
pag.strerr(err, s);
|
||||
return error_box(s);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::reset_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
if (fm._fattura.rate() == 0)
|
||||
fm._pag->read();
|
||||
fm.read_scadenze();
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::recalc_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_SPACE)
|
||||
{
|
||||
const bool on = f.get().not_empty();
|
||||
const TMask& m = f.mask();
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
ps.enable_column(3, on);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::nrate_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
TFattura_mask& fm = (TFattura_mask&)f.mask();
|
||||
TPagamento& pag = *fm._pag;
|
||||
|
||||
pag.set_numero_rate(atoi(f.get()));
|
||||
if (pag.dirty())
|
||||
{
|
||||
TSheet_field& ps = (TSheet_field&)fm.field(FS_RATESHEET);
|
||||
pag.set_sheet(ps);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TFattura_mask::codcab_handler(TMask_field& f, KEY key)
|
||||
{
|
||||
if (key == K_TAB && f.focusdirty())
|
||||
{
|
||||
const TMask& m = f.mask();
|
||||
const short id = f.dlg() == FS_NSCAB ? FS_NSABI : FS_VSABI;
|
||||
const int pos = id == FS_NSABI ? 6 : 8;
|
||||
const TString16 abi = m.get(id);
|
||||
const TString16 cab = m.get(id+1);
|
||||
TSheet_field& ps = (TSheet_field&)m.field(FS_RATESHEET);
|
||||
for (int i = ps.items()-1; i >= 0; i--)
|
||||
{
|
||||
TToken_string& row = ps.row(i);
|
||||
row.add(abi, pos);
|
||||
row.add(cab, pos+1);
|
||||
}
|
||||
ps.force_update();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void TFattura_mask::read_scadenze()
|
||||
{
|
||||
TRiga_partite& partita = _fattura;
|
||||
TPagamento& pag = *_pag;
|
||||
TSheet_field& ps = pag_sheet();
|
||||
|
||||
real imponibile, imposte, spese, cambio;
|
||||
|
||||
if (partita.in_valuta())
|
||||
{
|
||||
imponibile = partita.get_real(PART_IMPORTOVAL);
|
||||
cambio = partita.get_real(PART_CAMBIO);
|
||||
|
||||
real imp = imponibile;
|
||||
imp *= cambio;
|
||||
imp.round();
|
||||
set(FS_IMPONIBILI, imp);
|
||||
}
|
||||
else
|
||||
{
|
||||
imponibile = partita.get_real(PART_IMPORTO);
|
||||
set(FS_IMPONIBILI, imponibile);
|
||||
}
|
||||
|
||||
pag.set_total(imponibile, imposte, spese);
|
||||
pag.set_cambio(cambio);
|
||||
|
||||
if (partita.rate() > 0)
|
||||
{
|
||||
pag.zap_rate();
|
||||
for (int i = 1; i <= partita.rate(); i++)
|
||||
{
|
||||
const TRiga_scadenze& scadenza = partita.rata(i);
|
||||
real importo = scadenza.get(SCAD_IMPORTO);
|
||||
const TDate scad = scadenza.get(SCAD_DATASCAD);
|
||||
const int tipop = scadenza.get_int(SCAD_TIPOPAG);
|
||||
const bool paid = scadenza.get_bool(SCAD_PAGATA);
|
||||
const TString16 ulc = scadenza.get(SCAD_ULTCLASS);
|
||||
if (scadenza.in_valuta())
|
||||
{
|
||||
const real impval(scadenza.get(SCAD_IMPORTOVAL));
|
||||
pag.set_rata(i-1, impval, importo, scad, tipop, ulc, paid);
|
||||
}
|
||||
else
|
||||
pag.set_rata(i-1, importo, ZERO, scad, tipop, ulc, paid);
|
||||
|
||||
TToken_string& str = ps.row(i-1);
|
||||
str.add(scadenza.get(SCAD_CODABIPR), 6);
|
||||
str.add(scadenza.get(SCAD_CODCABPR), 7);
|
||||
str.add(scadenza.get(SCAD_CODABI), 8);
|
||||
str.add(scadenza.get(SCAD_CODCAB), 9);
|
||||
if (i == 1)
|
||||
{
|
||||
set(FS_NSABI, str.get(6));
|
||||
set(FS_NSCAB, str.get(7));
|
||||
set(FS_VSABI, str.get(8));
|
||||
set(FS_VSCAB, str.get(9));
|
||||
set(FS_AGENTE, scadenza.get(SCAD_CODAG));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
pag.set_rate_auto();
|
||||
}
|
||||
|
||||
set(FS_RDIFFER, pag.rate_differenziate() ? "1" : "2");
|
||||
set(FS_NAMEPAG, pag.name());
|
||||
set(FS_TIPOPR, pag.desc_tpr());
|
||||
set(FS_MCOMM, pag.mese_commerciale() ? "X" : "");
|
||||
set(FS_RECALC, "X", TRUE);
|
||||
set(FS_NRATE, pag.n_rate());
|
||||
|
||||
pag.set_sheet(ps);
|
||||
_pag_rows = ps.rows_array();
|
||||
|
||||
// se la prima rata e' fissa non si tocca
|
||||
if (pag.tipo_prima_rata() > 3)
|
||||
ps.disable_cell(0,-1);
|
||||
}
|
||||
|
||||
void TFattura_mask::write_scadenze() const
|
||||
{
|
||||
CHECK(_pag, "Null pagament");
|
||||
const TPagamento& pag = *_pag;
|
||||
TRiga_partite& partita = _fattura;
|
||||
|
||||
TSheet_field& ps = pag_sheet();
|
||||
|
||||
const TString agente = get(FS_AGENTE);
|
||||
|
||||
partita.elimina_rate();
|
||||
for (int i = 0; i < pag.n_rate(); i++)
|
||||
{
|
||||
TToken_string& row = ps.row(i);
|
||||
|
||||
TRiga_scadenze& scadenza = partita.new_row();
|
||||
scadenza.put(SCAD_CODPAG, pag.code());
|
||||
scadenza.put(SCAD_TIPOPAG, pag.tipo_rata(i));
|
||||
scadenza.put(SCAD_ULTCLASS, pag.ulc_rata(i));
|
||||
if (partita.in_valuta())
|
||||
{
|
||||
scadenza.put(SCAD_IMPORTO, pag.tlit_rata(i));
|
||||
scadenza.put(SCAD_IMPORTOVAL, pag.tpay_rata(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
scadenza.put(SCAD_IMPORTO, pag.tpay_rata(i));
|
||||
scadenza.zero(SCAD_IMPORTOVAL);
|
||||
}
|
||||
scadenza.put(SCAD_DATASCAD, pag.data_rata(i));
|
||||
scadenza.put(SCAD_CODABIPR, row.get(6));
|
||||
scadenza.put(SCAD_CODCABPR, row.get(7));
|
||||
scadenza.put(SCAD_CODABI, row.get(8));
|
||||
scadenza.put(SCAD_CODCAB, row.get(9));
|
||||
scadenza.put(SCAD_PAGATA, pag.ratapagata(i));
|
||||
scadenza.put(SCAD_CODAG, agente);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Addendum alla maschera gestione partite
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool TGame_mask::edit_fattura(TPartita& p, int nriga)
|
||||
{
|
||||
TString16 codpag;
|
||||
|
||||
const bool nuova = nriga <= 0;
|
||||
if (nuova)
|
||||
nriga = nuova_riga(p);
|
||||
|
||||
TRiga_partite& f = p.riga(nriga);
|
||||
if (f.rate() > 0)
|
||||
_codpag = f.rata(1).get(SCAD_CODPAG);
|
||||
|
||||
TFattura_mask fm(f, _codpag);
|
||||
const bool ok = fm.run() == K_ENTER;
|
||||
|
||||
if (nuova && !ok)
|
||||
p.rimuovi_riga(nriga);
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Gestione partite extra-contabili
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
void TSaldaconto_app::edit_partite(const TMask& m)
|
||||
{
|
||||
TBill b; // Legge il conto della riga selezionata
|
||||
b.set(m.get_int(F_GRUPPO), m.get_int(F_CONTO),
|
||||
m.get_long(F_SOTTOCONTO), m.get(F_TIPO)[0]);
|
||||
|
||||
TGame_mask gm(b, 0, 0);
|
||||
gm.run();
|
||||
if (gm.changed() && yesno_box("Si vogliono salvare le partite modificate?"))
|
||||
partite().rewrite();
|
||||
partite().destroy();
|
||||
}
|
||||
|
||||
|
21
sc/sc2.cpp
Executable file
21
sc/sc2.cpp
Executable file
@ -0,0 +1,21 @@
|
||||
#include <xvt.h>
|
||||
#include <stdlib.h>
|
||||
#include <checks.h>
|
||||
|
||||
#include "sc2.h"
|
||||
|
||||
#define usage "Errore - uso : sc2 -0"
|
||||
|
||||
int main(int argc,char** argv)
|
||||
{
|
||||
const int n = (argc > 1) ? (atoi(&argv[1][1])) : 0;
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case 0:
|
||||
sc2100(argc,argv); break;
|
||||
default:
|
||||
error_box(usage);
|
||||
}
|
||||
return 0;
|
||||
}
|
10
sc/sc2.url
Executable file
10
sc/sc2.url
Executable file
@ -0,0 +1,10 @@
|
||||
#include <default.url>
|
||||
|
||||
MENU TASK_MENUBAR
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
||||
MENUBAR MENU_BAR(1)
|
||||
|
||||
MENU MENU_BAR(1)
|
||||
SUBMENU MENU_FILE "~File"
|
||||
|
396
sc/sc2100.cpp
Executable file
396
sc/sc2100.cpp
Executable file
@ -0,0 +1,396 @@
|
||||
#ifndef __APPLICAT_H
|
||||
#include <applicat.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MASK_H
|
||||
#include <mask.h>
|
||||
#endif
|
||||
|
||||
#ifndef __FORM_H
|
||||
#include <form.h>
|
||||
#endif
|
||||
|
||||
#ifndef __RELATION_H
|
||||
#include <relation.h>
|
||||
#endif
|
||||
|
||||
#ifndef __URLDEFID_H
|
||||
#include <urldefid.h>
|
||||
#endif
|
||||
|
||||
#ifndef __SHEET_H
|
||||
#include <sheet.h>
|
||||
#endif
|
||||
|
||||
#ifndef __LFFILES_H
|
||||
#include <lffiles.h>
|
||||
#endif
|
||||
|
||||
#include "sc2.h"
|
||||
#include "sc2100a.h"
|
||||
|
||||
class TStampaEC_application : public TApplication
|
||||
{
|
||||
enum what {clienti, fornitori};
|
||||
|
||||
// begin AARGH
|
||||
TRelation* _clifo_rel;
|
||||
TCursor* _cli_cur_k1;
|
||||
TCursor* _cli_cur_k2;
|
||||
TCursor* _for_cur_k1;
|
||||
TCursor* _for_cur_k2;
|
||||
TCursor_sheet* _cli_sh_k1;
|
||||
TCursor_sheet* _cli_sh_k2;
|
||||
TCursor_sheet* _for_sh_k1;
|
||||
TCursor_sheet* _for_sh_k2;
|
||||
// end AARGH
|
||||
|
||||
what _what;
|
||||
int _key;
|
||||
TBit_array _selected;
|
||||
|
||||
TRelation* _ditta;
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual bool menu(MENU_TAG m);
|
||||
|
||||
long select_clifo_range(TMask& m, long from, long to);
|
||||
|
||||
static TStampaEC_application& app() { return (TStampaEC_application&)main_app(); }
|
||||
|
||||
// handlers
|
||||
static bool bfrom_handler(TMask_field& f, KEY k);
|
||||
static bool bto_handler(TMask_field& f, KEY k);
|
||||
static bool ffrom_handler(TMask_field& f, KEY k);
|
||||
static bool fto_handler(TMask_field& f, KEY k);
|
||||
static bool breset_handler(TMask_field& f, KEY k);
|
||||
static bool bselect_handler(TMask_field& f, KEY k);
|
||||
static bool rclifo_handler(TMask_field& f, KEY k);
|
||||
static bool rsortcf_handler(TMask_field& f, KEY k);
|
||||
|
||||
void set_clifo_limits(TMask&);
|
||||
|
||||
public:
|
||||
|
||||
bool select_ec(); // starting point
|
||||
bool print_selected();
|
||||
bool print_ec(long clifo);
|
||||
|
||||
TCursor_sheet* cur_sheet();
|
||||
|
||||
// utils per handlers
|
||||
void reset_sheets(TMask& m);
|
||||
void set_what(what w) {_what = w; }
|
||||
void set_key (int k) {_key = k; }
|
||||
|
||||
TStampaEC_application();
|
||||
virtual ~TStampaEC_application() {}
|
||||
};
|
||||
|
||||
// handlers
|
||||
bool TStampaEC_application::bfrom_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().cur_sheet()->disable_check();
|
||||
if (app().cur_sheet()->run() == K_ENTER)
|
||||
{
|
||||
TToken_string& t = app().cur_sheet()->row(app().cur_sheet()->selected());
|
||||
long cod1 = t.get_long(1);
|
||||
long cod2 = f.mask().get_long(F_CFCODTO);
|
||||
f.mask().set(F_CFCODFR, cod1);
|
||||
app().select_clifo_range(f.mask(), cod1, cod2);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::bto_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().cur_sheet()->disable_check();
|
||||
if (app().cur_sheet()->run() == K_ENTER)
|
||||
{
|
||||
TToken_string& t = app().cur_sheet()->row(app().cur_sheet()->selected());
|
||||
long cod2 = t.get_long(1);
|
||||
long cod1 = f.mask().get_long(F_CFCODFR);
|
||||
f.mask().set(F_CFCODTO, cod2);
|
||||
app().select_clifo_range(f.mask(), cod1, cod2);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::ffrom_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (!f.focusdirty()) return TRUE;
|
||||
|
||||
if (k == K_TAB)
|
||||
{
|
||||
long cod1 = atol(f.get());
|
||||
long cod2 = f.mask().get_long(F_CFCODTO);
|
||||
app().select_clifo_range(f.mask(), cod1, cod2);
|
||||
}
|
||||
else if (k == K_F9)
|
||||
app().bfrom_handler(f.mask().field(B_CFCODFR), K_SPACE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::fto_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (!f.focusdirty()) return TRUE;
|
||||
|
||||
if (k == K_TAB)
|
||||
{
|
||||
long cod2 = atol(f.get());
|
||||
long cod1 = f.mask().get_long(F_CFCODFR);
|
||||
app().select_clifo_range(f.mask(), cod1, cod2);
|
||||
}
|
||||
else if (k == K_F9)
|
||||
app().bfrom_handler(f.mask().field(B_CFCODTO), K_SPACE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::breset_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
app().reset_sheets(f.mask());
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::bselect_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().cur_sheet()->enable_check();
|
||||
app().cur_sheet()->run();
|
||||
}
|
||||
app().set_clifo_limits(f.mask());
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::rclifo_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().set_what(f.get() == "1" ? clienti : fornitori);
|
||||
app().reset_sheets(f.mask());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::rsortcf_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (k == K_SPACE)
|
||||
{
|
||||
app().set_key(atoi(f.get()));
|
||||
app().reset_sheets(f.mask());
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
long TStampaEC_application::select_clifo_range(TMask& m, long from, long to)
|
||||
{
|
||||
long nsel = 0;
|
||||
|
||||
if (cur_sheet()->items() == 0)
|
||||
{
|
||||
beep();
|
||||
return 0l;
|
||||
}
|
||||
|
||||
if (to == 0l)
|
||||
to = cur_sheet()->row(cur_sheet()->items() - 1).get_long(1);
|
||||
if (from == 0l)
|
||||
from = cur_sheet()->row(0).get_long(1);
|
||||
|
||||
if (from > to)
|
||||
{
|
||||
long tmp = to;
|
||||
to = from;
|
||||
from = tmp;
|
||||
}
|
||||
|
||||
bool go = FALSE;
|
||||
bool cod1ok = FALSE, cod2ok = FALSE;
|
||||
long last = 0l;
|
||||
long firs = 0l;
|
||||
|
||||
for (long i = 0; i < cur_sheet()->items(); i++)
|
||||
{
|
||||
TToken_string& tt = cur_sheet()->row(i);
|
||||
long cod = tt.get_long(1);
|
||||
if (cod >= from && cod <= to)
|
||||
{
|
||||
cur_sheet()->check(i);
|
||||
nsel ++;
|
||||
if (firs == 0l) firs = cod;
|
||||
last = cod;
|
||||
}
|
||||
else cur_sheet()->uncheck(i);
|
||||
|
||||
if (cod == from) cod1ok = TRUE;
|
||||
if (cod == to) cod2ok = TRUE;
|
||||
}
|
||||
|
||||
if (!cod1ok) from = firs;
|
||||
if (!cod2ok) to = last;
|
||||
|
||||
m.set(F_CFCODFR, from);
|
||||
m.set(F_CFCODTO, to);
|
||||
m.set(F_NSEL, nsel);
|
||||
return 0l;
|
||||
}
|
||||
|
||||
void TStampaEC_application::reset_sheets(TMask& m)
|
||||
{
|
||||
_cli_sh_k1->uncheck(-1);
|
||||
_cli_sh_k2->uncheck(-1);
|
||||
_for_sh_k1->uncheck(-1);
|
||||
_for_sh_k2->uncheck(-1);
|
||||
|
||||
m.set(F_CFCODFR,"");
|
||||
m.set(F_CFCODTO,"");
|
||||
}
|
||||
|
||||
bool TStampaEC_application::select_ec()
|
||||
{
|
||||
TMask m("sc2100a");
|
||||
KEY k;
|
||||
|
||||
m.set_handler(R_CLIFO, rclifo_handler);
|
||||
m.set_handler(R_SORTCF, rsortcf_handler);
|
||||
m.set_handler(B_CFCODFR, bfrom_handler);
|
||||
m.set_handler(B_CFCODTO, bto_handler);
|
||||
m.set_handler(B_SELECT, bselect_handler);
|
||||
m.set_handler(B_RESET, breset_handler);
|
||||
m.set_handler(F_CFCODFR, ffrom_handler);
|
||||
m.set_handler(F_CFCODTO, fto_handler);
|
||||
|
||||
if (_ditta->good())
|
||||
{
|
||||
m.set(F_COMSEND, _ditta->lfile(LF_COMUNI).get("COM"));
|
||||
m.set(F_LUOGOSEND, _ditta->lfile(LF_COMUNI).get("DENCOM"));
|
||||
}
|
||||
|
||||
while ((k = m.run()) != K_ESC)
|
||||
if (k == K_ENTER)
|
||||
print_selected();
|
||||
|
||||
return k != K_ESC;
|
||||
}
|
||||
|
||||
void TStampaEC_application::set_clifo_limits(TMask& m)
|
||||
{
|
||||
long first = 0, last = 0;
|
||||
bool primo = FALSE;
|
||||
for (int i = 0; i < cur_sheet()->items(); i++)
|
||||
{
|
||||
if (cur_sheet()->checked(i))
|
||||
{
|
||||
TToken_string& t = cur_sheet()->row(i);
|
||||
long kod = t.get_long(1);
|
||||
if (!primo++) first = last = kod;
|
||||
if (first > kod) first = kod;
|
||||
if (last < kod) last = kod;
|
||||
}
|
||||
}
|
||||
m.set(F_CFCODFR, first);
|
||||
m.set(F_CFCODTO, last);
|
||||
}
|
||||
|
||||
bool TStampaEC_application::print_selected()
|
||||
{
|
||||
for (int i = 0; i < cur_sheet()->items(); i++)
|
||||
{
|
||||
if (cur_sheet()->checked(i))
|
||||
{
|
||||
TToken_string& t = cur_sheet()->row(i);
|
||||
print_ec(t.get_long(1));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::print_ec(long clifo)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
TCursor_sheet* TStampaEC_application::cur_sheet()
|
||||
{
|
||||
if (_key == 1) return (_what == clienti ? _cli_sh_k1 : _for_sh_k1);
|
||||
else return (_what == clienti ? _cli_sh_k2 : _for_sh_k2);
|
||||
}
|
||||
|
||||
bool TStampaEC_application::create()
|
||||
{
|
||||
TApplication::create();
|
||||
|
||||
// crea relazioni, cursori e cursor_sheets
|
||||
_clifo_rel = new TRelation(LF_CLIFO);
|
||||
|
||||
_cli_cur_k1 = new TCursor(_clifo_rel, "TIPOCF=\"C\"", 1);
|
||||
_cli_cur_k2 = new TCursor(_clifo_rel, "TIPOCF=\"C\"", 2);
|
||||
_for_cur_k1 = new TCursor(_clifo_rel, "TIPOCF=\"F\"", 1);
|
||||
_for_cur_k2 = new TCursor(_clifo_rel, "TIPOCF=\"F\"", 2);
|
||||
|
||||
_cli_sh_k1 = new TCursor_sheet(_cli_cur_k1, " |CODCF|RAGSOC", "Selezione clienti per codice",
|
||||
"@1|Codice|Ragione Sociale@50");
|
||||
_cli_sh_k2 = new TCursor_sheet(_cli_cur_k2, " |RAGSOC|CODCF", "Selezione clienti per ragione sociale",
|
||||
"@1|Ragione Sociale@50|Codice");
|
||||
_for_sh_k1 = new TCursor_sheet(_for_cur_k1, " |CODCF|RAGSOC", "Selezione fornitori per codice",
|
||||
"@1|Codice|Ragione Sociale@50");
|
||||
_for_sh_k2 = new TCursor_sheet(_for_cur_k2, " |RAGSOC|CODCF", "Selezione fornitori per ragione sociale",
|
||||
"@1|Ragione Sociale@50|Codice");
|
||||
|
||||
// relasiun per la ditta defiga
|
||||
_ditta = new TRelation(LF_NDITTE);
|
||||
_ditta->add(LF_ANAG, "TIPOA==TIPOA|CODANAGR==CODANAGR");
|
||||
_ditta->add(LF_COMUNI, "COM==COMRF(COMRES)", 1, LF_ANAG);
|
||||
|
||||
_ditta->zero();
|
||||
_ditta->lfile().put("CODDITTA", get_firm());
|
||||
_ditta->read();
|
||||
|
||||
dispatch_e_menu(MENU_ITEM(1));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool TStampaEC_application::destroy()
|
||||
{
|
||||
delete _for_sh_k2;
|
||||
delete _for_sh_k1;
|
||||
delete _cli_sh_k2;
|
||||
delete _cli_sh_k1;
|
||||
delete _for_cur_k2;
|
||||
delete _for_cur_k1;
|
||||
delete _cli_cur_k2;
|
||||
delete _cli_cur_k1;
|
||||
delete _clifo_rel;
|
||||
|
||||
return TApplication::destroy();
|
||||
}
|
||||
|
||||
bool TStampaEC_application::menu(MENU_TAG m)
|
||||
{
|
||||
if (m == MENU_ITEM(1))
|
||||
return select_ec();
|
||||
else return TApplication::menu(m);
|
||||
}
|
||||
|
||||
TStampaEC_application::TStampaEC_application() : _selected(10000), _what(clienti), _key(1)
|
||||
{
|
||||
}
|
||||
|
||||
int sc2100(int argc, char** argv)
|
||||
{
|
||||
TStampaEC_application app;
|
||||
app.run(argc, argv, "Stampa Estratti Conto");
|
||||
return 0;
|
||||
}
|
23
sc/sc2100a.h
Executable file
23
sc/sc2100a.h
Executable file
@ -0,0 +1,23 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOC 102
|
||||
#define F_CODPROF 103
|
||||
#define F_DESPROF 104
|
||||
#define D_DATALIMOP 105
|
||||
#define D_DATALIMSC 106
|
||||
#define F_GIORISCH 107
|
||||
#define B_STAMPCHIU 108
|
||||
#define D_DATACHIU 109
|
||||
#define F_LUOGOSEND 110
|
||||
#define D_DATASEND 111
|
||||
#define R_CLIFO 112
|
||||
#define F_CFCODFR 113
|
||||
#define F_CFCODTO 114
|
||||
#define B_CFCODFR 115
|
||||
#define B_CFCODTO 116
|
||||
#define F_CFDESFR 117
|
||||
#define F_CFDESTO 118
|
||||
#define B_SELECT 119
|
||||
#define B_RESET 120
|
||||
#define R_SORTCF 121
|
||||
#define F_NSEL 122
|
||||
#define F_COMSEND 123
|
198
sc/sc2100a.uml
Executable file
198
sc/sc2100a.uml
Executable file
@ -0,0 +1,198 @@
|
||||
#include "sc2100a.h"
|
||||
|
||||
PAGE "Stampa estratti conto" -1 -1 68 17
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 1 1 "Cod. "
|
||||
FLAGS "DFR"
|
||||
USE LF_NDITTE KEY 1
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOC RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_RAGSOC 50 46
|
||||
BEGIN
|
||||
PROMPT 13 1 "R.S. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 68 8
|
||||
BEGIN
|
||||
PROMPT 0 7 ""
|
||||
END
|
||||
|
||||
STRING F_CODPROF 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "Codice profilo "
|
||||
USE LF_FORM KEY 1
|
||||
DISPLAY "Codice" CODPROF
|
||||
DISPLAY "Descrizione@50" DESC
|
||||
INPUT CODPROF F_CODPROF
|
||||
OUTPUT F_CODPROF CODPROF
|
||||
OUTPUT F_DESPROF DESC
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING F_DESPROF 50 30
|
||||
BEGIN
|
||||
PROMPT 34 8 " "
|
||||
HELP ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
DATE D_DATALIMOP
|
||||
BEGIN
|
||||
PROMPT 1 9 "Data limite operazione "
|
||||
HELP ""
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE D_DATALIMSC
|
||||
BEGIN
|
||||
PROMPT 1 10 "Data limite scaduto "
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
NUMBER F_GIORISCH 3
|
||||
BEGIN
|
||||
PROMPT 1 11 "Giorni calcolo rischio "
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BOOLEAN B_STAMPCHIU
|
||||
BEGIN
|
||||
PROMPT 1 12 "Stampa partite chiuse"
|
||||
MESSAGE TRUE ENABLE,D_DATACHIU
|
||||
MESSAGE FALSE DISABLE,D_DATACHIU
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
DATE D_DATACHIU
|
||||
BEGIN
|
||||
PROMPT 25 12 "dal "
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
STRING F_COMSEND 5
|
||||
BEGIN
|
||||
PROMPT 1 13 "Luogo d'invio "
|
||||
USE LF_COMUNI KEY 1
|
||||
INPUT COM F_COMSEND
|
||||
INPUT DENCOM F_LUOGOSEND
|
||||
DISPLAY "Codice" COM
|
||||
DISPLAY "Descrizione@50" DENCOM
|
||||
OUTPUT F_COMSEND COM
|
||||
OUTPUT F_LUOGOSEND DENCOM
|
||||
// CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
STRING F_LUOGOSEND 50 20
|
||||
BEGIN
|
||||
PROMPT 24 13 ""
|
||||
USE LF_COMUNI KEY 2
|
||||
INPUT DENCOM F_LUOGOSEND
|
||||
INPUT COM F_COMSEND
|
||||
DISPLAY "Descrizione@50" DENCOM
|
||||
DISPLAY "Codice" COM
|
||||
OUTPUT F_COMSEND COM
|
||||
OUTPUT F_LUOGOSEND DENCOM
|
||||
// CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
DATE D_DATASEND
|
||||
BEGIN
|
||||
PROMPT 50 13 "data "
|
||||
HELP ""
|
||||
FLAGS "A"
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
|
||||
BUTTON B_SELECT 10 1
|
||||
BEGIN
|
||||
PROMPT 51 3 "~Selezione"
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
BUTTON B_RESET 10 1
|
||||
BEGIN
|
||||
PROMPT 51 4 "~Azzera"
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
RADIOBUTTON R_CLIFO 20
|
||||
BEGIN
|
||||
PROMPT 1 2 "Selezione"
|
||||
ITEM "1|Clienti"
|
||||
ITEM "2|Fornitori"
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
RADIOBUTTON R_SORTCF 20
|
||||
BEGIN
|
||||
PROMPT 25 2 "Ordinamento"
|
||||
ITEM "1|Per codice"
|
||||
ITEM "2|Per ragione sociale"
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
NUMBER F_CFCODFR 5
|
||||
BEGIN
|
||||
PROMPT 1 6 "Da codice "
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
NUMBER F_CFCODTO 5
|
||||
BEGIN
|
||||
PROMPT 36 6 "a codice "
|
||||
HELP ""
|
||||
FLAGS ""
|
||||
END
|
||||
|
||||
NUMBER F_NSEL 3
|
||||
BEGIN
|
||||
PROMPT 56 6 "N. "
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BUTTON B_CFCODFR 2 1
|
||||
BEGIN
|
||||
PROMPT 31 6 ""
|
||||
PICTURE 109
|
||||
END
|
||||
|
||||
BUTTON B_CFCODTO 2 1
|
||||
BEGIN
|
||||
PROMPT 51 6 ""
|
||||
PICTURE 109
|
||||
END
|
||||
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
Loading…
x
Reference in New Issue
Block a user