cg1100.cpp Tolto linkrecinst

cg1307.cpp   Corretta gestione zoppi: errori MI3687 MI3688 MI3689 MI3690
cg1500.cpp   Tolto linkrecinst
cg2100.cpp   Eliminata test_firm_change_enabled in quanto inutile
cg2102.h     Eliminata test_firm_change_enabled in quanto inutile
cg2104.cpp   Tolta riga vuota


git-svn-id: svn://10.65.10.50/trunk@6363 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1998-03-16 13:46:03 +00:00
parent 3251e4e4ba
commit d68ee462e9
6 changed files with 234 additions and 63 deletions

View File

@ -72,7 +72,8 @@ class CG1100_application : public TPrintapp
int _gruppo,_conto,_num_da_stamp,_num_stamp,_g_prec,_c_prec; int _gruppo,_conto,_num_da_stamp,_num_stamp,_g_prec,_c_prec;
long _sottoc,_s_prec; long _sottoc,_s_prec;
TString _classe_da_stampare,_classe_stampata,_codcbl_da_stamp,_codcbl_stamp; TString _classe_da_stampare,_classe_stampata,_codcbl_da_stamp,_codcbl_stamp;
bool _conto_classificato,_sottoc_classificato,_stampa_riga_vuota; bool _conto_classificato,_stampa_riga_vuota;
byte _sottoc_classificato;
bool _prima_volta, _stampa_g, _stampa_c; bool _prima_volta, _stampa_g, _stampa_c;
TDate _data_stampa; TDate _data_stampa;
@ -1041,7 +1042,7 @@ bool CG1100_application::elabora_riga()
int CG1100_application::leggo_sottoc(int gruppo,int conto,long sottoc) int CG1100_application::leggo_sottoc(int gruppo,int conto,long sottoc)
{ {
TLocalisamfile pconti (LF_PCON,FALSE); TLocalisamfile pconti (LF_PCON);
char sez; char sez;
int gr,co; int gr,co;
int esito = 0; int esito = 0;
@ -1110,7 +1111,7 @@ bool CG1100_application::preprocess_page(int file,int counter)
if (sez == '0') if (sez == '0')
{ {
_sottoc_classificato = leggo_sottoc(gruppo,conto,sottoc); _sottoc_classificato = byte(leggo_sottoc(gruppo,conto,sottoc));
if (_sottoc_classificato == 0) if (_sottoc_classificato == 0)
_conto_classificato = TRUE; _conto_classificato = TRUE;
else else

View File

@ -1,10 +1,12 @@
#include <applicat.h> #include <applicat.h>
#include <defmask.h>
#include <isam.h> #include <isam.h>
#include <prefix.h> #include <prefix.h>
#include <progind.h> #include <progind.h>
#include <recarray.h> #include <recarray.h>
#include <sheet.h> #include <sheet.h>
#include <urldefid.h>
#include "cgsaldac.h"
#include <clifo.h> #include <clifo.h>
#include <mov.h> #include <mov.h>
@ -12,6 +14,7 @@
#include <pconti.h> #include <pconti.h>
#include <rmov.h> #include <rmov.h>
#include <rmoviva.h> #include <rmoviva.h>
#include <partite.h>
#ifndef FOR_EACH_FILE_RECORD #ifndef FOR_EACH_FILE_RECORD
@ -30,8 +33,11 @@ class TElimina_zoppi : public TSkeleton_application
TArray _decoders; TArray _decoders;
protected: protected:
static bool test_file(int rmov, TString_array& arr); static bool test_row_file(int rmov, TString_array& arr);
static int kill_row(long numreg, const char* codrig); static bool test_head_file(TString_array& arr);
static int kill_game(long numreg, int numrig);
static int kill_row(long numreg, char tipor, int numrig);
static bool firm_handler(TMask_field& f, KEY k); static bool firm_handler(TMask_field& f, KEY k);
static bool select_handler(TMask_field& f, KEY k); static bool select_handler(TMask_field& f, KEY k);
@ -121,30 +127,35 @@ const char* TElimina_zoppi::decode(int num, const char* key, const char* field)
return dec->decode(key); return dec->decode(key);
} }
bool TElimina_zoppi::test_file(int lf_rmov, TString_array& arr) bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
{ {
bool ok = TRUE; bool ok = TRUE;
TLocalisamfile& mov = app().file(LF_MOV); TLocalisamfile& mov = app().file(LF_MOV);
TLocalisamfile& rmov = app().file(lf_rmov); TLocalisamfile& row = app().file(lf_rmov);
TString msg; TString msg;
msg << "Controllo righe "; msg << "Controllo righe ";
if (lf_rmov == LF_RMOV) switch (lf_rmov)
msg << "contabili"; {
else case LF_RMOV : msg << "contabili"; break;
msg << "iva"; case LF_RMOVIVA: msg << "iva"; break;
msg << ": 0"; case LF_PARTITE: msg << "saldaconto";break;
default: CHECKD(0, "Invalid row file %d", lf_rmov); break;
}
msg << ": 0";
msg.center_just(50); msg.center_just(50);
TProgind pi(rmov.items(), msg, TRUE, TRUE, 50); TProgind pi(row.items(), msg, TRUE, TRUE, 50);
TToken_string riga, descr; TToken_string riga, descr;
long reg, last_reg, found = 0; long reg, last_reg = 0, found = 0;
bool reg_killed = TRUE; bool reg_killed = FALSE;
char tipo;
int gruppo, conto; int gruppo, conto;
long sottoconto; long sottoconto;
FOR_EACH_FILE_RECORD(rmov) FOR_EACH_FILE_RECORD(row)
{ {
if (pi.iscancelled()) if (pi.iscancelled())
{ {
@ -153,11 +164,20 @@ bool TElimina_zoppi::test_file(int lf_rmov, TString_array& arr)
} }
pi.addstatus(1); pi.addstatus(1);
reg = rmov.get_long(MOV_NUMREG); if (lf_rmov == LF_PARTITE)
reg = row.get_long(PART_NREG);
else
reg = row.get_long(MOV_NUMREG);
if (reg != last_reg) if (reg != last_reg)
{ {
mov.put(MOV_NUMREG, reg); if (reg > 0)
reg_killed = mov.read() != NOERR; {
mov.put(MOV_NUMREG, reg);
reg_killed = mov.read() != NOERR;
}
else
reg_killed = lf_rmov != LF_PARTITE;
last_reg = reg; last_reg = reg;
} }
if (reg_killed) if (reg_killed)
@ -168,30 +188,53 @@ bool TElimina_zoppi::test_file(int lf_rmov, TString_array& arr)
msg << found; msg << found;
pi.set_text(msg); pi.set_text(msg);
const int numrig = rmov.get_int(RMV_NUMRIG); switch (lf_rmov)
riga.format(" |%6ld|%c%3d", reg, (lf_rmov == LF_RMOV) ? 'C' : 'I', numrig);
riga.add(rmov.get(RMV_ANNOES));
if (lf_rmov == LF_RMOV)
{ {
riga.add(rmov.get_real(RMV_IMPORTO).string(".")); case LF_RMOV :
riga << ' ' << rmov.get(RMV_SEZIONE); riga.format(" |%6ld|C%4d", reg, row.get_int(RMV_NUMRIG));
} riga.add(row.get(RMV_ANNOES));
else riga.add(row.get_real(RMV_IMPORTO).string("."));
{ riga << ' ' << row.get(RMV_SEZIONE);
riga.add(rmov.get_real(RMI_IMPONIBILE).string(".")); break;
case LF_RMOVIVA:
riga.format(" |%6ld|I%4d", reg, row.get_int(RMI_NUMRIG));
riga.add(row.get(RMI_ANNOES));
riga.add(row.get_real(RMI_IMPONIBILE).string("."));
riga << " "; riga << " ";
} break;
riga.add(gruppo = rmov.get_int(RMV_GRUPPO)); case LF_PARTITE:
riga.add(conto = rmov.get_int(RMV_CONTO)); riga.format(" |%6ld|S%4d", reg, row.get_int(PART_NRIGA));
riga.add(sottoconto = rmov.get_long(RMV_SOTTOCONTO)); riga.add(row.get(PART_ANNO));
riga.add(row.get_real(PART_IMPORTO).string("."));
riga << ' ' << row.get(PART_SEZ);
break;
default: CHECKD(0, "Invalid row file %d", lf_rmov); break;
};
if (lf_rmov == LF_RMOV) descr.cut(0);
descr = rmov.get(RMV_DESCR); if (lf_rmov == LF_PARTITE)
{
tipo = row.get_char(PART_TIPOCF);
gruppo = row.get_int(PART_GRUPPOCL);
conto = row.get_int(PART_CONTOCL);
sottoconto = row.get_long(PART_SOTTOCONTO);
descr = row.get(PART_DESCR);
}
else else
descr.cut(0); {
tipo = row.get_char(RMV_TIPOC);
gruppo = row.get_int(RMV_GRUPPO);
conto = row.get_int(RMV_CONTO);
sottoconto = row.get_long(RMV_SOTTOCONTO);
if (lf_rmov == LF_RMOV)
descr = row.get(PART_DESCR);
}
riga.add(gruppo);
riga.add(conto);
riga.add(sottoconto);
if (descr.empty()) if (descr.empty())
{ {
char tipo = rmov.get_char(RMV_TIPOC);
if (tipo == 'C' || tipo == 'F') if (tipo == 'C' || tipo == 'F')
{ {
descr << tipo << '|' << sottoconto; descr << tipo << '|' << sottoconto;
@ -211,12 +254,137 @@ bool TElimina_zoppi::test_file(int lf_rmov, TString_array& arr)
return ok; return ok;
} }
int TElimina_zoppi::kill_row(long numreg, const char* codrig) bool TElimina_zoppi::test_head_file(TString_array& arr)
{ {
const int lf_rmov = *codrig == 'I' ? LF_RMOVIVA : LF_RMOV; bool ok = TRUE;
TLocalisamfile& rmov= app().file(lf_rmov); TLocalisamfile& mov = app().file(LF_MOV);
TLocalisamfile& rmov = app().file(LF_RMOV);
TLocalisamfile& rmoviva = app().file(LF_RMOVIVA);
TString msg;
msg << "Controllo testate di prima nota: 0";
msg.center_just(50);
TProgind pi(mov.items(), msg, TRUE, TRUE, 50);
TToken_string riga, descr;
FOR_EACH_FILE_RECORD(mov)
{
if (pi.iscancelled())
{
ok = FALSE;
break;
}
pi.addstatus(1);
long reg = mov.get_long(MOV_NUMREG);
int rmov_err = NOERR;
int rmoviva_err = NOERR;
if (reg > 0)
{
rmov.put(RMV_NUMREG, reg);
rmov.put(RMV_NUMRIG, 1);
rmov_err = rmov.read();
rmoviva.put(RMI_NUMREG, reg);
rmoviva.put(RMI_NUMRIG, 1);
rmoviva_err = rmoviva.read();
}
if (reg == 0 || rmov_err != NOERR && rmoviva_err != NOERR)
{
riga.format(" |%6ld|T", reg);
riga.add(mov.get(MOV_ANNOES));
riga.add(mov.get_real(MOV_TOTDOC).string("."));
riga << " | | ";
riga.add(mov.get(MOV_CODCF));
descr = mov.get(MOV_DESCR);
if (descr.empty())
{
char tipo = rmov.get_char(MOV_TIPO);
if (tipo == 'C' || tipo == 'F')
{
descr << tipo << '|' << mov.get(MOV_CODCF);
descr = app().decode(LF_CLIFO, descr, CLI_RAGSOC);
}
}
riga.add(descr);
arr.add(riga);
}
}
return ok;
}
int TElimina_zoppi::kill_game(long numreg, int numrig)
{
TPartite_array games;
games.add_numreg(numreg);
for (TPartita* game = games.first(); game; game = games.next())
{
bool update = FALSE;
const int fattura = game->prima_fattura(numreg);
if (fattura > 0)
{
game->scollega_pagamenti(fattura, 1);
game->rimuovi_riga(fattura);
update = TRUE;
}
const int rigapag = game->primo_pagamento(numreg);
if (rigapag > 0)
{
for (int p = game->last(); p > 0; p = game->pred(p))
{
TRiga_partite& part = game->riga(p);
if (part.is_fattura())
{
for (int r = part.rate(); r > 0; r--)
{
TRiga_scadenze& scad = part.rata(r);
for (int s = scad.last(); s > 0; s = scad.pred(s))
{
const TRiga_partite& sum = game->riga(s);
if (sum.get_long(PART_NREG) == numreg)
{
game->elimina_pagamento(p, r, s);
update = TRUE;
}
}
}
}
}
TRecord_array& unas = game->unassigned();
for (int u = unas.last_row(); u > 0; u = unas.pred_row(u))
{
const TRiga_partite& sum = game->riga(u);
if (sum.get_long(PART_NREG) == numreg)
{
game->elimina_pagamento(TPartita::UNASSIGNED, 0, u);
update = TRUE;
}
}
}
if (update)
game->rewrite();
}
return NOERR;
}
int TElimina_zoppi::kill_row(long numreg, char tipor, int numrig)
{
int lf = 0;
switch (tipor)
{
case 'C': lf = LF_RMOV; break;
case 'I': lf = LF_RMOVIVA; break;
case 'T': lf = LF_MOV; break;
case 'S': return kill_game(numreg, numrig);
default : break;
}
TLocalisamfile& rmov= app().file(lf);
rmov.put(RMV_NUMREG, numreg); rmov.put(RMV_NUMREG, numreg);
rmov.put(RMV_NUMRIG, codrig+1); if (lf != LF_MOV)
rmov.put(RMV_NUMRIG, numrig);
int err = rmov.read(); int err = rmov.read();
if (err == NOERR) if (err == NOERR)
err = rmov.remove(); err = rmov.remove();
@ -228,13 +396,17 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
bool ok = TRUE; bool ok = TRUE;
if (k == K_SPACE) if (k == K_SPACE)
{ {
TArray_sheet sheet(-1, -1, 76, 20, APPNAME, "@1|Codice@6|Riga|Anno|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50"); TArray_sheet sheet(-1, -1, 76, 20, APPNAME, "@1|Codice@6|Riga@5|Anno@R|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50");
TString_array& arr = sheet.rows_array(); TString_array& arr = sheet.rows_array();
ok = test_file(LF_RMOV, arr); ok = test_row_file(LF_RMOV, arr);
if (ok) if (ok)
ok = test_file(LF_RMOVIVA, arr); ok = test_row_file(LF_RMOVIVA, arr);
arr.sort(); if (ok)
ok = test_head_file(arr);
if (ok)
ok = test_row_file(LF_PARTITE, arr);
if (ok)
arr.sort();
if (ok && sheet.run() == K_ENTER) if (ok && sheet.run() == K_ENTER)
{ {
const long total = sheet.checked(); const long total = sheet.checked();
@ -250,10 +422,14 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
break; break;
pi.addstatus(1); pi.addstatus(1);
long reg = riga->get_long(1); TString16 str = riga->get(2);
kill_row(reg, riga->get(2)); char tipor = str[0];
int numrig = atoi(str.mid(1));
kill_row(riga->get_long(1), tipor, numrig);
} }
} }
message_box("Si consiglia di eseguire il ricalcolo\n"
"dei saldi dal menu di prima nota.");
} }
} }
} }
@ -264,6 +440,7 @@ void TElimina_zoppi::main_loop()
{ {
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, 0); open_files(LF_CLIFO, LF_NDITTE, LF_PCON, 0);
open_files(LF_MOV, LF_RMOV, LF_RMOVIVA, 0); open_files(LF_MOV, LF_RMOV, LF_RMOVIVA, 0);
open_files(LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
TMask m(APPNAME, 1, 30, 5); TMask m(APPNAME, 1, 30, 5);
m.add_number(DLG_USER, 0, "Codice ditta ", 1, 1, 5, "BUF"); m.add_number(DLG_USER, 0, "Codice ditta ", 1, 1, 5, "BUF");

View File

@ -2174,7 +2174,7 @@ void TStampa_bilanci::riempi_record(char t,int g,int c,long s,
void TStampa_bilanci::leggi_clifo(const TArray& gccf) void TStampa_bilanci::leggi_clifo(const TArray& gccf)
{ {
TSaldo sld; TSaldo sld;
TLocalisamfile saldi(LF_SALDI, FALSE); TLocalisamfile saldi(LF_SALDI);
int g=0, c=0; int g=0, c=0;
long codcf=0l; long codcf=0l;
TString80 ragsoc; TString80 ragsoc;
@ -3504,7 +3504,7 @@ print_action TStampa_bilanci::postprocess_page(int file, int counter)
TDate TStampa_bilanci::UltimaData(int g, int c, long s, int anno) TDate TStampa_bilanci::UltimaData(int g, int c, long s, int anno)
{ {
TDate uldata; TDate uldata;
TLocalisamfile saldi(LF_SALDI, FALSE); //il parametro a false permette di usare un record corrente del file saldi differente a quello del file tmp TLocalisamfile saldi(LF_SALDI); //il parametro a false permette di usare un record corrente del file saldi differente a quello del file tmp
saldi.zero(); saldi.zero();
if (_annoes != 0) if (_annoes != 0)
@ -3528,7 +3528,7 @@ const char* TStampa_bilanci::DescrizioneConto(int g, int c, long s, char tipocf)
{ {
TString80 ragsoc; TString80 ragsoc;
const char* desc = NULL; const char* desc = NULL;
TLocalisamfile pconti(LF_PCON,FALSE); TLocalisamfile pconti(LF_PCON);
TLocalisamfile clifo (LF_CLIFO); TLocalisamfile clifo (LF_CLIFO);
pconti.zero(); pconti.zero();

View File

@ -442,12 +442,6 @@ TMask* TPrimanota_application::get_mask(int mode)
return load_mask(_iva == nessuna_iva ? 1 : 2); return load_mask(_iva == nessuna_iva ? 1 : 2);
} }
bool TPrimanota_application::firm_change_enabled() const
{
const bool ok = _msk[2] == NULL && TRelation_application::firm_change_enabled();
return ok;
}
void TPrimanota_application::on_firm_change() void TPrimanota_application::on_firm_change()
{ {
TRelation_application::on_firm_change(); // May be useful, who knows? TRelation_application::on_firm_change(); // May be useful, who knows?

View File

@ -168,7 +168,6 @@ protected: // TRelation_application
virtual int rewrite(const TMask& m); virtual int rewrite(const TMask& m);
virtual bool remove(); virtual bool remove();
virtual void write_enable(bool) {} virtual void write_enable(bool) {}
virtual bool firm_change_enabled() const;
virtual bool protected_record(TRectype& rec); virtual bool protected_record(TRectype& rec);
protected: protected: