Modifica ai programmi di stampa bilancio e stampa bilancio IV cee, riguardo la modifica richiesta da PATRIZIA sul bilancio di verifica per data limite che deve includere se richiesto la quadratura con il libro giornale (cioe' se richiesta quadratura sono considerati anche i movimenti con causale di chiusura), e sul bilancio di verifica all'ultima immissione che deve considerare il saldo finale dei movimenti di chiusura anziche' i progressivi e basta come faceva prima.

Inoltre sono state apportate alcune modifiche anche alle maschere dell' invio in base all'errore segnalato da Vladimiro (mancava la possibilita' di scaricare il trasfer su disco fisso).


git-svn-id: svn://10.65.10.50/trunk@3027 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
ale 1996-06-19 14:04:56 +00:00
parent e8a53188c7
commit ad35c4e4dc
13 changed files with 241 additions and 86 deletions

View File

@ -119,7 +119,7 @@ class CG1500_application : public TPrintapp
bool _add_file_dare, _prima_volta, _seconda_volta, _totali, _codici, _saldo;
bool _add_dare, _add_avere, _controlla, _salto_pagina, _flag, _stampato;
bool _sottoc_dare, _sottoc_avere, _salto_pagina1, _livello_conto;
bool _mov_ap;
bool _mov_ap,_quadratura;
int _stampa_mov_prov;
//TString _causale_ap, _causale_chi;
TArray _clienti, _fornitori;
@ -392,6 +392,31 @@ bool mask_datalim (TMask_field& f, KEY k)
bool mask_date(TMask_field& f, KEY k)
{
if (k == K_TAB)
{
const short id = f.dlg();
if (id == F_DATAA)
{
TDate data (f.get());
int bil = f.mask().get_int(F_BILANCIO);
int anno = date2esc(data);
TTable esc ("ESC");
TString dep (format("%04d", anno));
esc.zero();
esc.put("CODTAB", dep);
if (esc.read() == NOERR)
{
TDate dataini (esc.get_date("D1"));
if (data == dataini && bil == 2)
f.mask().show(F_QUADRATURA);
else
f.mask().hide(F_QUADRATURA);
}
}
}
if (k == K_ENTER)
{
const short id = f.dlg();
@ -1694,9 +1719,10 @@ bool CG1500_application::calcola(int g, int c, long s)
TCaus cau (codcaus);
if (codcaus.not_empty())
if (cau.chiusura()) //Si tratta di causale di chiusura
continue;
if (cau.chiusura()) // Si tratta di causale di chiusura
if (!_quadratura) // Non e' richiesta la quadratura con il Libro Giornale (Modifica
continue; // del 18-06-96 richiesta da Patrizia in seguito alla modifica dei SALDI)
//la causale e' uguale a quella di chiusura
//break;
@ -3735,7 +3761,9 @@ bool CG1500_application::set_print(int)
_annoes = atoi(m.get(F_ANNO));
_bilancio = atoi(m.get(F_BILANCIO));
_data = m.get(F_DATASTAMPA);
_stampa_mov_prov = m.get_int(F_STAMPAMPROV);
_stampa_mov_prov = m.get_int(F_STAMPAMPROV);
_quadratura = m.get_bool(F_QUADRATURA);
if (_bilancio == 1)
{
_prog = new TProgind(_pcn->items(),"Elaborazione in corso... prego attendere",FALSE);

View File

@ -20,7 +20,8 @@
#define F_STAMPAC 119
#define F_ORDINAMENTO 120
#define F_MODULO 121
#define F_STAMPAMPROV 122
#define F_STAMPAMPROV 122
#define F_QUADRATURA 123
#endif // __CG1500_H

View File

@ -53,7 +53,8 @@ BEGIN
MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV|HIDE,F_DATADA|RESET,F_DATADA
MESSAGE HIDE,F_DATAA|RESET,F_DATAA|HIDE,F_SITUAZIONE|RESET,F_SITUAZIONE
MESSAGE HIDE,F_ORDINAMENTO|RESET,F_ORDINAMENTO|HIDE,F_STAMPAC|RESET,F_STAMPAC
MESSAGE HIDE,96|HIDE,97|HIDE,98|HIDE,99
MESSAGE HIDE,96|HIDE,97|HIDE,98|HIDE,99
MESSAGE HIDE,F_QUADRATURA
//MESSAGE HIDE,F_MODULO|RESET,F_MODULO
MESSAGE SHOW,F_STAMPA|K_SPACE,F_STAMPA
ITEM "2|Bilancio di verifica"
@ -62,6 +63,7 @@ BEGIN
MESSAGE HIDE,F_CODICI|RESET,F_CODICI|HIDE,F_SALDO|RESET,F_SALDO
MESSAGE HIDE,F_STAMPAV|RESET,F_STAMPAV
MESSAGE SHOW,F_VERIFICA|K_SPACE,F_VERIFICA|SHOW,F_STAMPA1|K_SPACE,F_STAMPA1
MESSAGE SHOW,F_QUADRATURA
//MESSAGE SHOW,F_MODULO|K_SPACE,F_MODULO
MESSAGE SHOW,96|SHOW,97|SHOW,98|SHOW,99
END
@ -168,6 +170,11 @@ BEGIN
ITEM "2|198 crt."
END
BOOLEAN F_QUADRATURA
BEGIN
PROMPT 2 13 "Quadratura con Libro Giornale"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""

View File

@ -309,13 +309,15 @@ class CG1600_application : public TPrintapp
real _nuovo_tot_saldo_d, _nuovo_tot_saldo_a;
int _i;
bool _reset_righe_stampa,_totale_attivita_gia_stampato,_totale_passivita_gia_stampato,_statopatr_no_stamp;
bool _sbilancio_ordine;
bool _sbilancio_ordine, _quadratura;
//TString _causale_ap, _causale_chi;
public:
TDate _inizioEs, _fineEs;
TDate _inizioEs, _fineEs;
int date2esc(const TDate& d, int* prevesc = NULL);
bool menu (MENU_TAG m) { return TPrintapp::menu(m) ; }
virtual bool user_create() ;
virtual bool user_destroy();
@ -381,6 +383,24 @@ void CG1600_application::postclose_print()
delete _sort;
}
int CG1600_application::date2esc(const TDate& d, int* prevesc)
{
if (prevesc) *prevesc = 0;
TTable esc("ESC");
for (int err = esc.first(); err == NOERR; err = esc.next())
{
const TDate ia(esc.get("D0")); // Data inizio esercizio
const TDate fa(esc.get("D1")); // Data fine esercizio
a()._inizioEs = ia;
a()._fineEs = fa;
const anno = esc.get_int("CODTAB");
if (d >= ia && d <= fa)
return anno;
if (prevesc) *prevesc = anno;
}
return 0;
}
void CG1600_application::set_bil_key(bil_ivd* b, char sezione, char lettera,
const char* numero_romano, int numero,
bool conti_ordine, int gruppo, int conto,
@ -481,7 +501,7 @@ bool data_limite (TMask_field& f, KEY key)
return FALSE;
}
int anno = date2esc(datalim);
int anno = a().date2esc(datalim);
if (anno == 0)
{
@ -530,7 +550,7 @@ bool data_bil_raff (TMask_field& f, KEY key)
if (datalim != botime)
{
date2esc(datalim);
a().date2esc(datalim);
in = a()._inizioEs;
}
else
@ -539,7 +559,7 @@ bool data_bil_raff (TMask_field& f, KEY key)
TString instr = in.string();
if (dataraf != botime)
{
anno = date2esc(dataraf);
anno = a().date2esc(dataraf);
in_raf = a()._inizioEs;
fin_raf = a()._fineEs;
a()._anno_esercizio_raf = anno;
@ -630,7 +650,7 @@ bool anno_ese_raff (TMask_field& f, KEY key)
if (datalim != botime)
{
anno = date2esc(datalim);
anno = a().date2esc(datalim);
if (annoraf >= anno)
{
@ -780,7 +800,7 @@ bool data_inizio(TMask_field& f, KEY k)
return FALSE;
}
int anno = date2esc(data);
int anno = a().date2esc(data);
if (anno == 0)
{
@ -810,7 +830,27 @@ bool data_fine(TMask_field& f, KEY k)
data = f.mask().get (F_DATAFINE);
data_ini = f.mask().get (F_DATAINI);
//a()._anno_esercizio = annoes;
if (k == K_TAB)
{
TDate data (f.get());
int bil = f.mask().get_int(F_TIPOBIL);
int anno = date2esc(data);
TTable esc ("ESC");
TString dep (format("%04d", anno));
esc.zero();
esc.put("CODTAB", dep);
if (esc.read() == NOERR)
{
TDate dataini (esc.get_date("D1"));
if (data == dataini && bil == 2)
f.mask().show(F_QUADRATURA);
else
f.mask().hide(F_QUADRATURA);
}
}
if (k == K_ENTER)
{
if (annoes != 0)
@ -839,7 +879,7 @@ bool data_fine(TMask_field& f, KEY k)
return FALSE;
}
date2esc(data_ini);
a().date2esc(data_ini);
TString data3 = a()._inizioEs.string();
TString data4 = a()._fineEs.string();
@ -1979,7 +2019,8 @@ bool CG1600_application::calcola(int g, int c, long s,
if (codcaus.not_empty())
if (cau.chiusura()) //la causale e' uguale a quella di chiusura
continue;
if (!_quadratura) // Non e' richiesta la quadratura con il Libro Giornale (Modifica
continue; // del 18-06-96 richiesta da Patrizia in seguito alla modifica dei SALDI
if (_annoese == 0)
data = datareg;
@ -2072,7 +2113,8 @@ if (tasto == K_ENTER)
_stampacod = (bool)(_msk->get(F_STAMPACOD) == "X");
_stampa_modulo = (bool)(_msk->get(F_STAMPAMODULO) == "X");
_tipo_bilancio = atoi(_msk->get(F_TIPOBIL));
_stampa_mov_prov = _msk->get_int(F_STAMPAMOVPROV);
_stampa_mov_prov = _msk->get_int(F_STAMPAMOVPROV);
_quadratura = _msk->get_bool(F_QUADRATURA);
if (_tipo_bilancio == 1)
{
_tipo_stampa = atoi(_msk->get(F_TIPOSTAMPA));

View File

@ -22,6 +22,7 @@
#define F_ANNOESE 116
#define F_ANNORAFFR 117
#define F_STAMPAMOVPROV 118
#define F_QUADRATURA 119
#endif // __CG1600_H

View File

@ -60,10 +60,12 @@ BEGIN
HELP "Indicare il tipo di bilancio da stampare"
ITEM "1|Bilancio scalare"
MESSAGE HIDE,F_TIPOSTAMPA1|RESET,F_TIPOSTAMPA1|SHOW,F_TIPOSTAMPA|K_SPACE,F_TIPOSTAMPA
MESSAGE SHOW,F_ANNORAFFR|SHOW,F_DATABILRAF
MESSAGE SHOW,F_ANNORAFFR|SHOW,F_DATABILRAF
MESSAGE HIDE,F_QUADRATURA
ITEM "2|Bilancio di verifica"
MESSAGE HIDE,F_TIPOSTAMPA|RESET,F_TIPOSTAMPA|SHOW,F_TIPOSTAMPA1|K_SPACE,F_TIPOSTAMPA1
MESSAGE HIDE,F_ANNORAFFR|HIDE,F_DATABILRAF
MESSAGE SHOW,F_QUADRATURA
END
LIST F_TIPOSTAMPA 23
@ -182,6 +184,11 @@ BEGIN
HELP "Indicare se si stampa su modulo stretto (80 colonne)"
END
BOOLEAN F_QUADRATURA
BEGIN
PROMPT 4 14 "Quadratura con Libro Giornale"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""

View File

@ -589,7 +589,7 @@ void Tabinv_application::init_modify_mode(TMask& m)
m.enable(F_PCON);
m.enable(F_MOV);
m.enable(F_IVA);
//m.enable(F_FATT);
m.enable(F_FATT);
m.enable(F_BOLLATO);
}
else
@ -599,7 +599,7 @@ void Tabinv_application::init_modify_mode(TMask& m)
m.disable(F_PCON);
m.disable(F_MOV);
m.disable(F_IVA);
//m.disable(F_FATT);
m.disable(F_FATT);
m.disable(F_BOLLATO);
}
}

View File

@ -182,17 +182,23 @@ bool TInv_cont::main_loop()
k = mask.run();
if (k == K_ENTER)
{
int num_disk = calcola_numero_dischi(mask);
char floppy = mask.get(F_FLOPPY)[0];
{
TString floppy = mask.get(F_FLOPPY);
int num_disk = calcola_numero_dischi(mask,floppy);
TString percorso = mask.get(F_PATH);
if (percorso.not_empty())
floppy << ":/" << percorso;
str.format("%02d", num_disk);
aggiorna_marker(str,29);
const TFilename from(_trasf); // File da splittare
TFilename work;
work << floppy << ":/" << from.name(); // File su dischetto
TFilename work;
if (percorso.not_empty())
work << floppy << "/" << from.name();
else
work << floppy << ":/" << from.name(); // File su dischetto
FILE* i = fopen(from, "rb");
@ -239,17 +245,23 @@ bool TInv_cont::main_loop()
k = mask.run();
if (k == K_ENTER)
{
int num_disk = calcola_numero_dischi(mask);
char floppy = mask.get(F_FLOPPY)[0];
{
TString floppy = mask.get(F_FLOPPY);
int num_disk = calcola_numero_dischi(mask,floppy);
TString percorso = mask.get(F_PATH);
if (percorso.not_empty())
floppy << ":/" << percorso;
str.format("%02d", num_disk);
aggiorna_marker(str,32);
const TFilename from(_trasf); // File da splittare
TFilename work;
work << floppy << ":/" << from.name(); // File su dischetto
TFilename work;
if (percorso.not_empty())
work << floppy << "/" << from.name(); // File su dischetto
else
work << floppy << ":/" << from.name(); // File su dischetto
FILE* i = fopen(from, "rb");

View File

@ -6,7 +6,8 @@
#include <colors.h>
#include <isam.h>
#include <math.h>
#include <math.h>
#include <dos.h>
#include <applicat.h>
#include <mask.h>
@ -161,9 +162,9 @@ public:
static bool setta_maschera_hnd(TMask_field& f, KEY k);
static bool messaggio_hnd (TMask_field& f, KEY k);
int calcola_numero_dischi(TMask& m);
FILE* chiedi_disco(const char* name, int disk, char floppy, bool lettura);
bool scrivi_disco(char floppy, int disk, const char* work, FILE* i, TProgind& w);
int calcola_numero_dischi(TMask& m,TString& floppy);
FILE* chiedi_disco(const char* name, int disk, TString& floppy, bool lettura);
bool scrivi_disco(TString& floppy, int disk, const char* work, FILE* i, TProgind& w);
bool invio_contabilita_PC();
void invio_testata_causali();

View File

@ -13,7 +13,8 @@
// Campi maschera cg6900b.uml
#define F_FLOPPY 201
#define F_DIM 202
#define F_DIM 202
#define F_PATH 203
// Campi maschera cg6903a.uml

View File

@ -1,12 +1,28 @@
#include "cg6900a.h"
PAGE "" -1 -1 40 7
PAGE "" -1 -1 52 8
LIST F_FLOPPY 1 5
BEGIN
PROMPT 1 1 "Disco "
ITEM "A|A:"
ITEM "B|B:"
ITEM "A|A:"
MESSAGE HIDE,F_PATH
MESSAGE ENABLE,F_DIM
ITEM "B|B:"
MESSAGE HIDE,F_PATH
MESSAGE ENABLE,F_DIM
ITEM "C|C:"
MESSAGE SHOW,F_PATH
MESSAGE DISABLE,F_DIM
ITEM "D|D:"
MESSAGE SHOW,F_PATH
MESSAGE DISABLE,F_DIM
ITEM "E|E:"
MESSAGE SHOW,F_PATH
MESSAGE DISABLE,F_DIM
ITEM "F|F:"
MESSAGE SHOW,F_PATH
MESSAGE DISABLE,F_DIM
END
LIST F_DIM 7
@ -19,6 +35,11 @@ BEGIN
HELP "Indicare la dimensione dei dischi che si vogliono usare"
END
STRING F_PATH 30
BEGIN
PROMPT 1 5 "Percorso "
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""

View File

@ -2,13 +2,17 @@
#include "cg6900a.h"
#include <math.h>
FILE* TInv_cont::chiedi_disco(const char* name, int disk, char floppy, bool lettura)
FILE* TInv_cont::chiedi_disco(const char* name, int disk, TString& floppy, bool lettura)
{
message_box("Inserire il disco %d nel drive %c:", disk, floppy);
FILE* f = NULL;
char flop = floppy[0];
if (flop != 'A' && flop != 'B') return f;
message_box("Inserire il disco %d nel drive %c:", disk, flop);
// name.ext(format("%03d", disk));
FILE* f = NULL;
bool retry = TRUE;
while (retry)
{
@ -25,11 +29,18 @@ FILE* TInv_cont::chiedi_disco(const char* name, int disk, char floppy, bool lett
return f;
}
bool TInv_cont::scrivi_disco(char floppy, int disk, const char* work,
bool TInv_cont::scrivi_disco(TString& floppy, int disk, const char* work,
FILE* i, TProgind& w)
{
chiedi_disco(work, disk, floppy, FALSE);
if (floppy[0] != 'A' && floppy[0] != 'B')
if (_dim_disk < _dim_tot)
{
warning_box("Lo spazio su disco non e' sufficiente");
return FALSE;
}
TString str;
str.format("%02d", disk);
if (_scelta == 'S')
@ -38,17 +49,20 @@ bool TInv_cont::scrivi_disco(char floppy, int disk, const char* work,
aggiorna_marker(str,34);
TString path_m;
path_m << floppy << ":\\marker";
// TString path_h;
// path_h << floppy << ":\\header";
TString path_t;
path_t << floppy << ":\\trasfer";
if (floppy[0] == 'A' || floppy[0] == 'B')
{
path_m << floppy << ":\\marker";
path_t << floppy << ":\\trasfer";
}
else
{
path_m << floppy << "\\marker";
path_t << floppy << "\\trasfer";
}
fcopy(_marker,path_m); // Copia il marker su disco
// if (disk == 1)
// fcopy(_header,path_h); // Copia il record di controllo solo sul primo disco
FILE* o = fopen(path_t, "wb");
@ -74,9 +88,9 @@ bool TInv_cont::scrivi_disco(char floppy, int disk, const char* work,
return TRUE;
}
int TInv_cont::calcola_numero_dischi(TMask& msk)
int TInv_cont::calcola_numero_dischi(TMask& msk,TString& floppy)
{
int numdisc = 0;
int numdisc = 1;
FILE* t = fopen(_trasf, "rb");
if (t == NULL) return error_box("Impossibile aprire il file '%s'", _trasf);
@ -97,34 +111,49 @@ int TInv_cont::calcola_numero_dischi(TMask& msk)
fclose(m);
_dim_tot = dim_t + dim_m; //+dim_h; // Determina la dimensione totale
int item = msk.get_int(F_DIM);
switch (item)
if (floppy[0] == 'A' || floppy[0] == 'B')
{
case 1 :
_dim_disk = 1400000L;
break;
case 2 :
_dim_disk = 1200000L;
break;
case 3 :
_dim_disk = 720000L;
break;
case 4 :
_dim_disk = 360000L;
break;
default :
break;
};
int item = msk.get_int(F_DIM);
if (_dim_tot < _dim_disk)
numdisc = 1;
switch (item)
{
case 1 :
_dim_disk = 1400000L;
break;
case 2 :
_dim_disk = 1200000L;
break;
case 3 :
_dim_disk = 720000L;
break;
case 4 :
_dim_disk = 360000L;
break;
default :
break;
};
if (_dim_tot < _dim_disk)
numdisc = 1;
else
{
numdisc = int(_dim_tot / _dim_disk);
if ( (_dim_tot % _dim_disk) != 0)
numdisc += 1;
}
}
else
{
numdisc = int(_dim_tot / _dim_disk);
if ( (_dim_tot % _dim_disk) != 0)
numdisc += 1;
{
struct _diskfree_t drive;
_dos_getdiskfree(0,&drive);
long bytes = drive.bytes_per_sector;
long settori = drive.sectors_per_cluster;
long cluster = drive.avail_clusters;
_dim_disk = bytes * settori * cluster;
}
return numdisc;

View File

@ -300,17 +300,18 @@ bool TSaldo::data_limite_bilancio(int bilancio, int g, int c, long s, const TDat
bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil,int stp_prov)
{
//Si considerano i saldi e non piu' i movimenti
char sezione;
char sezione,sezsf;
int gruppo, conto, annoe;
long sottoconto;
real pdarepro, paverepro;
real pdarepro, paverepro,saldofin;
bool esito = FALSE;
_saldo_iniziale = ZERO;
_saldoiniziale = ZERO;
_prg_dare = ZERO;
_prg_avere = ZERO;
_saldo = ZERO;
_saldo = ZERO;
saldofin = ZERO;
_saldi.zero();
_saldi.put(SLD_ANNOES,annoes);
@ -331,6 +332,8 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
pdarepro = _saldi.get_real(SLD_PDAREPRO);
paverepro = _saldi.get_real(SLD_PAVEREPRO);
sezione = _saldi.get_char(SLD_FLAGSALINI);
sezsf = _saldi.get_char(SLD_FLAGSALFIN); // W96SALDI del 19-06-96 modifica richiesta
saldofin = _saldi.get_real(SLD_SALDOFIN); // da PATRIZIA
if (stp_prov == 1) //bilancio normale (senza provvisori)
if (_saldo_iniziale == ZERO && _prg_dare == ZERO && _prg_avere == ZERO)
@ -339,7 +342,9 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
if (stp_prov == 0 && paverepro == ZERO)
return esito;
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
if (sezione == 'A') _saldo_iniziale = -_saldo_iniziale;
if (sezsf == 'A') saldofin = -saldofin; // W96SALDI del 19-06-96
_saldoiniziale = _saldo_iniziale; //saldo iniziale presente sul record saldi
//non comprensivo del saldo finale es.precedente
@ -354,10 +359,10 @@ bool TSaldo::ultima_immissione_verifica(int annoes,int g,int c,long s,int indbil
switch (stp_prov)
{
case 1:
_saldo = _saldo_iniziale + _prg_dare - _prg_avere;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + saldofin; // W96SALDI del 19-06-96
break;
case 2:
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro;
_saldo = _saldo_iniziale + _prg_dare - _prg_avere + pdarepro - paverepro + saldofin; // W96SALDI del 19-06-96
break;
case 3:
_saldo = pdarepro - paverepro;