Corretto calcolo prorata escludendo i beni ammortizzabili
git-svn-id: svn://10.65.10.50/branches/R_10_00@22992 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
f49be2e4f1
commit
cabf66ad4e
160
cg/cg1307.cpp
160
cg/cg1307.cpp
@ -4,7 +4,10 @@
|
|||||||
#include <prefix.h>
|
#include <prefix.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
#include <recarray.h>
|
#include <recarray.h>
|
||||||
|
#include <relation.h>
|
||||||
|
#include <recset.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
|
#include <urldefid.h>
|
||||||
|
|
||||||
#include "cgsaldac.h"
|
#include "cgsaldac.h"
|
||||||
|
|
||||||
@ -15,18 +18,8 @@
|
|||||||
#include <rmov.h>
|
#include <rmov.h>
|
||||||
#include <rmoviva.h>
|
#include <rmoviva.h>
|
||||||
|
|
||||||
#ifndef FOR_EACH_FILE_RECORD
|
|
||||||
|
|
||||||
#define FOR_EACH_FILE_RECORD(isamfile) \
|
|
||||||
for (int _e##isamfile = isamfile.first(); \
|
|
||||||
_e##isamfile == NOERR; \
|
|
||||||
_e##isamfile = isamfile.next())
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class TElimina_zoppi : public TSkeleton_application
|
class TElimina_zoppi : public TSkeleton_application
|
||||||
{
|
{
|
||||||
// TArray _files;
|
|
||||||
TArray _decoders;
|
TArray _decoders;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -40,11 +33,11 @@ protected:
|
|||||||
static int kill_row(long numreg, char tipor, 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);
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
const char* app_name() const {return TR("Righe prima nota errate");}
|
const char* app_name() const {return TR("Righe prima nota errate");}
|
||||||
const char* decode(int num, const char* key, const char* field);
|
const char* decode(int num, const char* key, const char* field);
|
||||||
|
const char* decode(int num, long key, const char* field);
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -56,22 +49,14 @@ bool TElimina_zoppi::firm_handler(TMask_field& f, KEY k)
|
|||||||
if (k == K_F9)
|
if (k == K_F9)
|
||||||
{
|
{
|
||||||
TArray_sheet sheet(-1, -1, 70, 20, TR("Scelta ditta"), HR("Codice|Ragione Sociale@50"));
|
TArray_sheet sheet(-1, -1, 70, 20, TR("Scelta ditta"), HR("Codice|Ragione Sociale@50"));
|
||||||
TToken_string row;
|
TString_array& rows = sheet.rows_array();
|
||||||
TLocalisamfile ditte(LF_NDITTE);
|
prefix().firms(rows);
|
||||||
|
FOR_EACH_ARRAY_ROW(rows, r, row)
|
||||||
FOR_EACH_FILE_RECORD(ditte)
|
|
||||||
{
|
{
|
||||||
const long cod = ditte.get_long(NDT_CODDITTA);
|
const long cod = row->get_long(0);
|
||||||
if (prefix().exist(cod))
|
row->add(app().decode(LF_NDITTE, cod, NDT_RAGSOC));
|
||||||
{
|
if (cod == prefix().get_codditta())
|
||||||
row.cut(0);
|
sheet.select(r);
|
||||||
row.add(cod);
|
|
||||||
row.add(ditte.get(NDT_RAGSOC));
|
|
||||||
|
|
||||||
const long pos = sheet.add(row);
|
|
||||||
if (cod == prefix().get_codditta())
|
|
||||||
sheet.select(pos);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (sheet.run() == K_ENTER)
|
if (sheet.run() == K_ENTER)
|
||||||
{
|
{
|
||||||
@ -86,7 +71,7 @@ bool TElimina_zoppi::firm_handler(TMask_field& f, KEY k)
|
|||||||
if (ok)
|
if (ok)
|
||||||
prefix().set_codditta(cod);
|
prefix().set_codditta(cod);
|
||||||
else
|
else
|
||||||
f.error_box(FR("La ditta %05ld non e' attivata per la contabilita'"), cod);
|
f.error_box(FR("La ditta %05ld non è attivata per la contabilità"), cod);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
@ -103,11 +88,19 @@ const char* TElimina_zoppi::decode(int num, const char* key, const char* field)
|
|||||||
return dec->decode(key);
|
return dec->decode(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* TElimina_zoppi::decode(int num, long key, const char* field)
|
||||||
|
{
|
||||||
|
TString8 k; k.format("%ld", key);
|
||||||
|
return decode(num, k, field);
|
||||||
|
}
|
||||||
|
|
||||||
bool TElimina_zoppi::test_row_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(LF_MOV);
|
TLocalisamfile mov(LF_MOV);
|
||||||
TLocalisamfile row(lf_rmov);
|
|
||||||
|
TString8 query; query.format("USE %d", lf_rmov);
|
||||||
|
TISAM_recordset recset(query);
|
||||||
|
|
||||||
TString msg;
|
TString msg;
|
||||||
switch (lf_rmov)
|
switch (lf_rmov)
|
||||||
@ -119,7 +112,7 @@ bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
|
|||||||
}
|
}
|
||||||
msg << ": 0";
|
msg << ": 0";
|
||||||
|
|
||||||
TProgind pi(row.items(), msg, true, true);
|
TProgress_monitor pi(recset.items(), msg);
|
||||||
TToken_string riga, descr;
|
TToken_string riga, descr;
|
||||||
|
|
||||||
long reg, last_reg = 0, found = 0;
|
long reg, last_reg = 0, found = 0;
|
||||||
@ -129,9 +122,10 @@ bool TElimina_zoppi::test_row_file(int lf_rmov, TString_array& arr)
|
|||||||
int gruppo, conto;
|
int gruppo, conto;
|
||||||
long sottoconto;
|
long sottoconto;
|
||||||
|
|
||||||
FOR_EACH_FILE_RECORD(row)
|
const TRectype& row = recset.cursor()->curr();
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.add_status(1))
|
||||||
{
|
{
|
||||||
ok = false;
|
ok = false;
|
||||||
break;
|
break;
|
||||||
@ -242,8 +236,7 @@ bool TElimina_zoppi::test_riga_partita(const TRectype& pagsca)
|
|||||||
k.add(pagsca.get(PART_ANNO));
|
k.add(pagsca.get(PART_ANNO));
|
||||||
k.add(pagsca.get(PART_NUMPART));
|
k.add(pagsca.get(PART_NUMPART));
|
||||||
k.add(nriga);
|
k.add(nriga);
|
||||||
const TRectype& part = cache().get(LF_PARTITE, k);
|
const int tipomov = atoi(app().decode(LF_PARTITE, k, PART_TIPOMOV));
|
||||||
const int tipomov = part.get_int(PART_TIPOMOV);
|
|
||||||
ok = tipomov == 1;
|
ok = tipomov == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +246,9 @@ bool TElimina_zoppi::test_riga_partita(const TRectype& pagsca)
|
|||||||
bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
TLocalisamfile pagsca(lf_pagsca);
|
|
||||||
|
TString8 query; query.format("USE %d", lf_pagsca);
|
||||||
|
TISAM_recordset recset(query);
|
||||||
long found = 0;
|
long found = 0;
|
||||||
|
|
||||||
TString msg;
|
TString msg;
|
||||||
@ -267,12 +262,13 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
|||||||
msg << ": 0";
|
msg << ": 0";
|
||||||
msg.center_just(50);
|
msg.center_just(50);
|
||||||
|
|
||||||
TProgind pi(pagsca.items(), msg, true, true);
|
TProgress_monitor pi(recset.items(), msg);
|
||||||
TToken_string riga, descr;
|
TToken_string riga, descr;
|
||||||
|
|
||||||
FOR_EACH_FILE_RECORD(pagsca)
|
const TRectype& pagsca = recset.cursor()->curr();
|
||||||
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
if (!pi.addstatus(1))
|
if (!pi.add_status())
|
||||||
{
|
{
|
||||||
ok = false;
|
ok = false;
|
||||||
break;
|
break;
|
||||||
@ -287,11 +283,11 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
|||||||
case LF_PAGSCA:
|
case LF_PAGSCA:
|
||||||
if (pagsca.get_int(PAGSCA_NRIGP) <= 0)
|
if (pagsca.get_int(PAGSCA_NRIGP) <= 0)
|
||||||
to_kill = true;
|
to_kill = true;
|
||||||
if (!test_riga_partita(pagsca.curr()))
|
if (!test_riga_partita(pagsca))
|
||||||
to_kill = true;
|
to_kill = true;
|
||||||
break;
|
break;
|
||||||
case LF_SCADENZE:
|
case LF_SCADENZE:
|
||||||
if (!test_riga_partita(pagsca.curr()))
|
if (!test_riga_partita(pagsca))
|
||||||
to_kill = true;
|
to_kill = true;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -306,7 +302,7 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
|||||||
msg << found;
|
msg << found;
|
||||||
pi.set_text(msg);
|
pi.set_text(msg);
|
||||||
|
|
||||||
riga.format(" |%6ld", pagsca.recno());
|
riga.format(" |%6ld", recset.cursor()->file().recno());
|
||||||
if (lf_pagsca == LF_SCADENZE)
|
if (lf_pagsca == LF_SCADENZE)
|
||||||
riga.add("S");
|
riga.add("S");
|
||||||
else
|
else
|
||||||
@ -331,8 +327,10 @@ bool TElimina_zoppi::test_scrow_file(int lf_pagsca, TString_array& arr)
|
|||||||
|
|
||||||
bool TElimina_zoppi::test_head_file(TString_array& arr)
|
bool TElimina_zoppi::test_head_file(TString_array& arr)
|
||||||
{
|
{
|
||||||
|
TEsercizi_contabili esc;
|
||||||
|
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
TLocalisamfile mov(LF_MOV);
|
TISAM_recordset recset("USE MOV");
|
||||||
TLocalisamfile rmov(LF_RMOV);
|
TLocalisamfile rmov(LF_RMOV);
|
||||||
TLocalisamfile rmoviva(LF_RMOVIVA);
|
TLocalisamfile rmoviva(LF_RMOVIVA);
|
||||||
|
|
||||||
@ -340,31 +338,39 @@ bool TElimina_zoppi::test_head_file(TString_array& arr)
|
|||||||
msg << TR("Controllo testate di prima nota: 0");
|
msg << TR("Controllo testate di prima nota: 0");
|
||||||
msg.center_just(50);
|
msg.center_just(50);
|
||||||
|
|
||||||
TProgind pi(mov.items(), msg, true, true, 50);
|
TProgress_monitor pi(recset.items(), msg);
|
||||||
TToken_string riga, descr;
|
TToken_string riga, descr;
|
||||||
|
const TRectype& mov = recset.cursor()->curr();
|
||||||
|
|
||||||
FOR_EACH_FILE_RECORD(mov)
|
for (bool ok = recset.move_first(); ok; ok = recset.move_next())
|
||||||
{
|
{
|
||||||
if (pi.iscancelled())
|
if (!pi.add_status())
|
||||||
{
|
{
|
||||||
ok = false;
|
ok = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pi.addstatus(1);
|
|
||||||
|
|
||||||
long reg = mov.get_long(MOV_NUMREG);
|
long reg = mov.get_long(MOV_NUMREG);
|
||||||
int rmov_err = NOERR;
|
|
||||||
int rmoviva_err = NOERR;
|
bool good = reg > 0;
|
||||||
if (reg > 0)
|
if (good)
|
||||||
{
|
{
|
||||||
|
//int rmoviva_err = NOERR;
|
||||||
rmov.put(RMV_NUMREG, reg);
|
rmov.put(RMV_NUMREG, reg);
|
||||||
rmov.put(RMV_NUMRIG, 1);
|
rmov.put(RMV_NUMRIG, 1);
|
||||||
rmov_err = rmov.read();
|
int rmov_err = rmov.read();
|
||||||
rmoviva.put(RMI_NUMREG, reg);
|
/*rmoviva.put(RMI_NUMREG, reg);
|
||||||
rmoviva.put(RMI_NUMRIG, 1);
|
rmoviva.put(RMI_NUMRIG, 1);
|
||||||
rmoviva_err = rmoviva.read();
|
int rmoviva_err = rmoviva.read();*/
|
||||||
|
good = rmov_err == NOERR;
|
||||||
|
if (good)
|
||||||
|
{
|
||||||
|
const int annoes = mov.get_int(MOV_ANNOES);
|
||||||
|
good = annoes > 0 && esc.exist(annoes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (reg == 0 || (rmov_err != NOERR && rmoviva_err != NOERR))
|
|
||||||
|
if (!good)
|
||||||
{
|
{
|
||||||
riga.format(" |%6ld|T", reg);
|
riga.format(" |%6ld|T", reg);
|
||||||
riga.add(mov.get(MOV_ANNOES));
|
riga.add(mov.get(MOV_ANNOES));
|
||||||
@ -487,18 +493,32 @@ int TElimina_zoppi::kill_row(long numreg, char tipor, int numrig)
|
|||||||
rmov.put(RMV_NUMRIG, numrig);
|
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();
|
||||||
|
if (err == NOERR && lf == LF_MOV)
|
||||||
|
{
|
||||||
|
// Cancella anche le righe collegate alla testata
|
||||||
|
for (int r = 1; kill_row(numreg, 'C', r) == NOERR; r++);
|
||||||
|
for (int r = 1; kill_row(numreg, 'I', r) == NOERR; r++);
|
||||||
|
}
|
||||||
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
void TElimina_zoppi::main_loop()
|
||||||
{
|
{
|
||||||
bool ok = true;
|
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, LF_MOV, LF_RMOV, LF_RMOVIVA, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
||||||
if (k == K_SPACE)
|
|
||||||
{
|
TMask m(app_name(), 1, 30, 5);
|
||||||
TArray_sheet sheet(-1, -1, 76, 20, app().app_name(), HR("@1|Codice@6|Riga@5|Anno@R|Importo@20R|Grp@R|Cnt@R|Sottoc@R|Descrizione@50"));
|
m.add_number(DLG_USER, 0, TR("Codice ditta "), 1, 1, 5, "BUF").set_handler(firm_handler);
|
||||||
|
m.add_button(DLG_ELABORA, 0, "", -12, -1, 10, 2, "", BMP_ELABORA).set_exit_key(K_ENTER);
|
||||||
|
m.add_button(DLG_QUIT, 0, "", -22, -1, 10, 2);
|
||||||
|
|
||||||
|
while (m.run() != K_QUIT)
|
||||||
|
{
|
||||||
|
TArray_sheet sheet(0, 0, 0, 0, app().app_name(), HR("@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_row_file(LF_RMOV, arr);
|
bool ok = test_row_file(LF_RMOV, arr);
|
||||||
if (ok)
|
if (ok)
|
||||||
ok = test_row_file(LF_RMOVIVA, arr);
|
ok = test_row_file(LF_RMOVIVA, arr);
|
||||||
if (ok)
|
if (ok)
|
||||||
@ -515,16 +535,15 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
const long total = sheet.checked();
|
const long total = sheet.checked();
|
||||||
if (total > 0 &&
|
if (total > 0 &&
|
||||||
yesno_box(FR("Confermare l'eliminazione di %ld righe."), total))
|
delete_box(FR("Confermare l'eliminazione di %ld righe."), total))
|
||||||
{
|
{
|
||||||
TProgind pi(total, TR("Eliminazione righe..."), true, true);
|
TProgress_monitor pi(total, TR("Eliminazione righe..."));
|
||||||
FOR_EACH_ARRAY_ROW(arr, i, riga)
|
FOR_EACH_ARRAY_ROW(arr, i, riga)
|
||||||
{
|
{
|
||||||
if (sheet.checked(i))
|
if (sheet.checked(i))
|
||||||
{
|
{
|
||||||
if (pi.iscancelled())
|
if (!pi.add_status())
|
||||||
break;
|
break;
|
||||||
pi.addstatus(1);
|
|
||||||
|
|
||||||
TString16 str = riga->get(2);
|
TString16 str = riga->get(2);
|
||||||
char tipor = str[0];
|
char tipor = str[0];
|
||||||
@ -536,21 +555,6 @@ bool TElimina_zoppi::select_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TElimina_zoppi::main_loop()
|
|
||||||
{
|
|
||||||
open_files(LF_CLIFO, LF_NDITTE, LF_PCON, LF_MOV, LF_RMOV, LF_RMOVIVA, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, 0);
|
|
||||||
|
|
||||||
TMask m(app_name(), 1, 30, 5);
|
|
||||||
m.add_number(DLG_USER, 0, TR("Codice ditta "), 1, 1, 5, "BUF");
|
|
||||||
m.add_button(DLG_SELECT, 0, "", -12, -1, 10, 2);
|
|
||||||
m.add_button(DLG_QUIT, 0, "", -22, -1, 10, 2);
|
|
||||||
m.set_handler(DLG_USER, firm_handler);
|
|
||||||
m.set_handler(DLG_SELECT, select_handler);
|
|
||||||
|
|
||||||
while (m.run() != K_QUIT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void elimina_zoppi(int argc, char* argv[])
|
void elimina_zoppi(int argc, char* argv[])
|
||||||
|
@ -2803,12 +2803,10 @@ void TStampa_bilanci::leggi_sort()
|
|||||||
|
|
||||||
void TStampa_bilanci::controlla_conto(int file1,int file2)
|
void TStampa_bilanci::controlla_conto(int file1,int file2)
|
||||||
{
|
{
|
||||||
char dep = '*';
|
|
||||||
|
|
||||||
if (!file1)
|
if (!file1)
|
||||||
if (_cambiato_conto_1)
|
if (_cambiato_conto_1)
|
||||||
{
|
{
|
||||||
set_row(_i,"@68g%c", dep);
|
set_row(_i,"@67g*");
|
||||||
_cambiato_conto_1 = FALSE;
|
_cambiato_conto_1 = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2827,7 +2825,7 @@ void TStampa_bilanci::controlla_conto(int file1,int file2)
|
|||||||
if (!file2)
|
if (!file2)
|
||||||
if (_cambiato_conto_2)
|
if (_cambiato_conto_2)
|
||||||
{
|
{
|
||||||
set_row(_i,"@68g%c", dep);
|
set_row(_i,"@67g*");
|
||||||
_cambiato_conto_2 = FALSE;
|
_cambiato_conto_2 = FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -2878,8 +2876,8 @@ void TStampa_bilanci::set_page(int file, int counter)
|
|||||||
|
|
||||||
if (!counter)
|
if (!counter)
|
||||||
{
|
{
|
||||||
set_row(_i++,FR("@29gATTIVITA'@94gPASSIVITA'"));
|
set_row(_i++,FR("@29gATTIVITA'@98gPASSIVITA'"));
|
||||||
set_row(_i++,"@29g---------@94g----------");
|
set_row(_i++,"@29g---------@98g----------");
|
||||||
set_row(_i++, dep);
|
set_row(_i++, dep);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2889,8 +2887,8 @@ void TStampa_bilanci::set_page(int file, int counter)
|
|||||||
if (!_salto_pagina)
|
if (!_salto_pagina)
|
||||||
{
|
{
|
||||||
printer().formfeed();
|
printer().formfeed();
|
||||||
set_row(_i++,FR("@29gCOSTI@94gRICAVI"));
|
set_row(_i++,FR("@29gCOSTI@98gRICAVI"));
|
||||||
set_row(_i++,"@29g-----@94g------");
|
set_row(_i++,"@29g-----@98g------");
|
||||||
set_row(_i++, dep);
|
set_row(_i++, dep);
|
||||||
_salto_pagina = TRUE;
|
_salto_pagina = TRUE;
|
||||||
|
|
||||||
@ -3446,91 +3444,69 @@ void TStampa_bilanci::stampa_totali_uno(const real& r1,const real& r2)
|
|||||||
void TStampa_bilanci::stampa_prima_colonna(int g, int c, long s,
|
void TStampa_bilanci::stampa_prima_colonna(int g, int c, long s,
|
||||||
const char* desc, const real& saldo)
|
const char* desc, const real& saldo)
|
||||||
{
|
{
|
||||||
char dep = '*';
|
|
||||||
|
|
||||||
if (_codici) //sono stampate solo le descrizioni dei conti
|
if (_codici) //sono stampate solo le descrizioni dei conti
|
||||||
{
|
{
|
||||||
if (!_totali)
|
if (!_totali)
|
||||||
{
|
{
|
||||||
if (c != 0 && s == 0)
|
if (c != 0 && s == 0)
|
||||||
set_row(_i, "%-.44s @44g @49g%r @68g%c", desc, &saldo, dep);
|
set_row(_i, "%-.44s @44g @48g%r", desc, &saldo);
|
||||||
else
|
else
|
||||||
set_row(_i, "%-.48s @49g%r @68g%c", desc, &saldo, dep);
|
set_row(_i, "%-.48s @48g%r", desc, &saldo);
|
||||||
}
|
}
|
||||||
else if ( !(c == 0 && s == 0) ) //se cioe' non e' un gruppo
|
else if ( !(c == 0 && s == 0) ) //se cioe' non e' un gruppo
|
||||||
{
|
{
|
||||||
if (s == 0) //se e' un conto
|
if (s == 0) //se e' un conto
|
||||||
set_row(_i, "%-.44s @44g @49g%r @68g%c", desc, &saldo, dep);
|
set_row(_i, "%-.44s @44g @48g%r", desc, &saldo);
|
||||||
else
|
else
|
||||||
set_row(_i, "%-.48s @49g%r @68g%c", desc, &saldo, dep);
|
set_row(_i, "%-.48s @48g%r", desc, &saldo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_totali && c == 0 && s == 0l)
|
if (_totali && c == 0 && s == 0l)
|
||||||
return;
|
return;
|
||||||
else if ( c == 0 && s == 0l )
|
|
||||||
|
set_row(_i, "@0g%3d", g);
|
||||||
|
if (c > 0)
|
||||||
{
|
{
|
||||||
set_row(_i, "%3d ", g);
|
set_row(_i, "@4g%3d", c);
|
||||||
set_row(_i, "@15g%-.31s @49g%r @68g%c", desc, &saldo, dep);
|
if (s > 0)
|
||||||
}
|
set_row(_i, "@8g%6ld", s);
|
||||||
else if (s == 0l)
|
|
||||||
{
|
|
||||||
set_row(_i, "%3d ", g);
|
|
||||||
set_row(_i, "%3d ", c);
|
|
||||||
set_row(_i, "@15g%-.31s @49g%r @68g%c", desc, &saldo, dep);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
set_row(_i, "%3d ", g);
|
|
||||||
set_row(_i, "%3d ", c);
|
|
||||||
set_row(_i, "%6ld ", s);
|
|
||||||
set_row(_i, "@15g%-.31s @49g%r @68g%c", desc, &saldo, dep);
|
|
||||||
}
|
}
|
||||||
|
set_row(_i, "@15g%-.31s @48g%r", desc, &saldo);
|
||||||
}
|
}
|
||||||
|
set_row(_i, "@67g*");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Guy: stampa la seconda colonna del bilancio di raffronto
|
// Guy: stampa la seconda colonna del bilancio di raffronto
|
||||||
void TStampa_bilanci::stampa_seconda_colonna(int g, int c, long s,
|
void TStampa_bilanci::stampa_seconda_colonna(int g, int c, long s, const char* desc, const real& saldo)
|
||||||
const char* desc, const real& saldo)
|
|
||||||
{
|
{
|
||||||
char dep = '*';
|
|
||||||
|
|
||||||
if (_codici) //sono stampate solo le descrizioni dei conti
|
if (_codici) //sono stampate solo le descrizioni dei conti
|
||||||
{
|
{
|
||||||
if (!_totali)
|
if (!_totali)
|
||||||
{
|
{
|
||||||
set_row(_i, "@68g%c@69g%-.47s @114g%r", dep, desc, &saldo);
|
set_row(_i, "@67g*@69g%-.47s @114g%r", desc, &saldo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
if ( !(c == 0 && s == 0) )
|
if ( !(c == 0 && s == 0) )
|
||||||
{
|
set_row(_i, "@67g*@69g%-.47s @114g%r", desc, &saldo);
|
||||||
set_row(_i, "@68g%c @69g%-.47s @114g%r", dep, desc, &saldo);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (_totali && c == 0 && s == 0l)
|
if (_totali && c == 0 && s == 0l)
|
||||||
return;
|
return;
|
||||||
else if ( c == 0 && s == 0l )
|
|
||||||
{
|
set_row(_i, "@67g*@69g%3d ", g);
|
||||||
set_row(_i, "@68g%c@69g%3d ", dep, g);
|
if (c > 0)
|
||||||
set_row(_i, "@84g%-.30s @114g%r", desc, &saldo);
|
|
||||||
}
|
|
||||||
else if (s == 0l)
|
|
||||||
{
|
{
|
||||||
set_row(_i, "@68g%c@69g%3d ", dep, g);
|
set_row(_i, "@73g%3d", c);
|
||||||
set_row(_i, "%3d", c);
|
if (s > 0)
|
||||||
set_row(_i, "@84g%-.30s @114g%r", desc, &saldo);
|
set_row(_i, "@77g%6ld", s);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
set_row(_i, "@68g%c@69g%3d ", dep, g);
|
|
||||||
set_row(_i, "%3d ", c);
|
|
||||||
set_row(_i, "%6ld ",s);
|
|
||||||
set_row(_i, "@84g%-.30s @114g%r", desc, &saldo);
|
|
||||||
}
|
}
|
||||||
|
set_row(_i, "@84g%-.30s @114g%r", desc, &saldo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2424,12 +2424,12 @@ bool TPrimanota_application::protected_record(TRectype& mov)
|
|||||||
{
|
{
|
||||||
if (mov.get_bool(MOV_STAMPATO))
|
if (mov.get_bool(MOV_STAMPATO))
|
||||||
{
|
{
|
||||||
ok = delete_box(FR("Il movimento %ld è già stato stampato sul libro giornale:\n"
|
ok = delete_box(FR("Il movimento %ld è già stato stampato sul libro giornale:\n"
|
||||||
"si desidera eliminarlo ugualmente?"), numreg);
|
"si desidera eliminarlo ugualmente?"), numreg);
|
||||||
}
|
}
|
||||||
if (ok && mov.get_bool(MOV_REGST))
|
if (ok && mov.get_bool(MOV_REGST))
|
||||||
{
|
{
|
||||||
ok = delete_box(FR("Il movimento %ld è già stato stampato sul bollato:\n"
|
ok = delete_box(FR("Il movimento %ld è già stato stampato sul bollato:\n"
|
||||||
"si desidera eliminarlo ugualmente?"), numreg);
|
"si desidera eliminarlo ugualmente?"), numreg);
|
||||||
}
|
}
|
||||||
if (ok && mov.get_bool(MOV_INVIATO))
|
if (ok && mov.get_bool(MOV_INVIATO))
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#include "cg2100p.h"
|
#include "cg2100p.h"
|
||||||
|
|
||||||
PAGE "Nuova partita" -1 -1 40 10
|
PAGE "Nuova partita" -1 -1 42 10
|
||||||
|
|
||||||
RADIOBUTTON P_NUOVO 1 23
|
RADIOBUTTON P_NUOVO 1 25
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 0 0 "@BTipo movimento"
|
PROMPT 0 0 "@BTipo movimento"
|
||||||
ITEM "1|Fattura"
|
ITEM "1|Fattura"
|
||||||
@ -14,7 +14,7 @@ END
|
|||||||
|
|
||||||
NUMBER P_ANNO 4
|
NUMBER P_ANNO 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 0 "Anno "
|
PROMPT 26 0 "Anno "
|
||||||
// FLAGS "A"
|
// FLAGS "A"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Inserire l'anno di riferimento partita"
|
WARNING "Inserire l'anno di riferimento partita"
|
||||||
@ -22,20 +22,20 @@ END
|
|||||||
|
|
||||||
STRING P_NUMERO 7
|
STRING P_NUMERO 7
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 24 1 "Numero "
|
PROMPT 26 1 "Numero "
|
||||||
FLAGS "U#"
|
FLAGS "U#"
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
WARNING "Inserire il numero di riferimento partita"
|
WARNING "Inserire il numero di riferimento partita"
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_CANCEL 10 2
|
BUTTON DLG_CANCEL 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 26 2 ""
|
PROMPT -1 -3 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 26 4 ""
|
PROMPT -1 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
@ -2476,16 +2476,13 @@ bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key)
|
|||||||
if (annodoc > 0 && fornitore > 0)
|
if (annodoc > 0 && fornitore > 0)
|
||||||
{
|
{
|
||||||
// SELECT NUMREG,DATAREG,DATADOC,NUMDOC FROM MOV
|
// SELECT NUMREG,DATAREG,DATADOC,NUMDOC FROM MOV
|
||||||
// WHERE TIPO='F' AND CODCF=F_FORNITORE AND
|
// WHERE TIPO='F' AND CODCF=F_FORNITORE AND REG<>'' AND
|
||||||
// NUMDOC=F_NUMDOC AND DATAREG>=F_DATADOC AND NUMREG<>F_NUMREG
|
// NUMDOC=F_NUMDOC AND DATAREG>=F_DATADOC AND NUMREG<>F_NUMREG
|
||||||
|
|
||||||
TString filter;
|
TString filter;
|
||||||
filter << MOV_NUMDOC << "=\"" << f.get() << '"';
|
filter << '(' << MOV_NUMDOC << "=\"" << f.get() << "\")&&(" << MOV_REG << "!=\"\")";
|
||||||
if (m.edit_mode())
|
if (m.edit_mode())
|
||||||
{
|
filter << "&&(" << MOV_NUMREG << "!=\"" << m.get(F_NUMREG) << "\")";
|
||||||
filter.insert("(");
|
|
||||||
filter << ")&&(" << MOV_NUMREG << "!=\"" << m.get(F_NUMREG) << "\")";
|
|
||||||
}
|
|
||||||
|
|
||||||
TRelation rel(LF_MOV);
|
TRelation rel(LF_MOV);
|
||||||
TRectype& rec = rel.curr();
|
TRectype& rec = rel.curr();
|
||||||
@ -2505,7 +2502,7 @@ bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key)
|
|||||||
{
|
{
|
||||||
const int ad = rec.get_date(MOV_DATADOC).year();
|
const int ad = rec.get_date(MOV_DATADOC).year();
|
||||||
if (ad == annodoc)
|
if (ad == annodoc)
|
||||||
return yesno_box("Il documento %d / %s e' gia' stato inserito con la registrazione %ld\nSi desidera continuare ugualmente?",
|
return yesno_box("Il documento %d / %s è già stato inserito con la registrazione %ld\nSi desidera continuare ugualmente?",
|
||||||
annodoc, (const char*)f.get(), rec.get_long(MOV_NUMREG));
|
annodoc, (const char*)f.get(), rec.get_long(MOV_NUMREG));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ protected:
|
|||||||
static bool edit_scadenza_handler(TMask_field& f, KEY k);
|
static bool edit_scadenza_handler(TMask_field& f, KEY k);
|
||||||
static bool nuovo_handler(TMask_field& f, KEY k);
|
static bool nuovo_handler(TMask_field& f, KEY k);
|
||||||
static bool cambio_handler(TMask_field& f, KEY k);
|
static bool cambio_handler(TMask_field& f, KEY k);
|
||||||
|
|
||||||
void add_importo(TToken_string& s, const TImporto& i, const char* val = NULL, int pos = -1);
|
void add_importo(TToken_string& s, const TImporto& i, const char* val = NULL, int pos = -1);
|
||||||
void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1);
|
void add_descrizione(TToken_string& s, const TRiga_partite& riga, int pos = -1);
|
||||||
TImporto get_importo(TToken_string& s, int pos) const;
|
TImporto get_importo(TToken_string& s, int pos) const;
|
||||||
@ -85,6 +85,7 @@ public:
|
|||||||
TSheet_field& partite() const { return sfield(P_PARTITE); }
|
TSheet_field& partite() const { return sfield(P_PARTITE); }
|
||||||
TSheet_field& scadenze() const { return sfield(P_SCADENZE); }
|
TSheet_field& scadenze() const { return sfield(P_SCADENZE); }
|
||||||
const TBill& conto() const { return _conto; }
|
const TBill& conto() const { return _conto; }
|
||||||
|
TPartita* partita_corrente() const;
|
||||||
|
|
||||||
const TImporto& residuo(bool val) const { return val ? _resval : _residuo; }
|
const TImporto& residuo(bool val) const { return val ? _resval : _residuo; }
|
||||||
bool changed() const { return _changed; }
|
bool changed() const { return _changed; }
|
||||||
@ -795,7 +796,6 @@ const TRiga_partite* TGame_mask::cerca_prima_riga() const
|
|||||||
return riga;
|
return riga;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TGame_mask::aggiorna_valuta(const TValuta& val)
|
void TGame_mask::aggiorna_valuta(const TValuta& val)
|
||||||
{
|
{
|
||||||
TPartite_array& pa = app().partite();
|
TPartite_array& pa = app().partite();
|
||||||
@ -832,13 +832,25 @@ void TGame_mask::aggiorna_valuta(const TValuta& val)
|
|||||||
|
|
||||||
TToken_string& TGame_mask::add_colored_row(TSheet_field& sheet, char type) const
|
TToken_string& TGame_mask::add_colored_row(TSheet_field& sheet, char type) const
|
||||||
{
|
{
|
||||||
int r = sheet.insert(-1, FALSE, FALSE);
|
int r = sheet.insert(-1, false, false);
|
||||||
COLOR back, fore;
|
COLOR back, fore;
|
||||||
app().type2colors(type, back, fore);
|
app().type2colors(type, back, fore);
|
||||||
sheet.set_back_and_fore_color(back, fore, r);
|
sheet.set_back_and_fore_color(back, fore, r);
|
||||||
return sheet.row(r);
|
return sheet.row(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TPartita* TGame_mask::partita_corrente() const
|
||||||
|
{
|
||||||
|
if (_riga_partite < 0)
|
||||||
|
return NULL;
|
||||||
|
TToken_string& row = partite().row(_riga_partite);
|
||||||
|
const int anno = row.get_int(0); // Anno partita
|
||||||
|
const TString16 num = row.get(); // Numero partita
|
||||||
|
const TBill& zio = conto();
|
||||||
|
TPartita* game = app().partite().exist(zio, anno, num);
|
||||||
|
return game;
|
||||||
|
}
|
||||||
|
|
||||||
bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
||||||
{
|
{
|
||||||
TGame_mask& gm = (TGame_mask&)partite.mask();
|
TGame_mask& gm = (TGame_mask&)partite.mask();
|
||||||
@ -1189,19 +1201,49 @@ bool TGame_mask::partite_notify(TSheet_field& partite, int r, KEY k)
|
|||||||
if (k == K_INS)
|
if (k == K_INS)
|
||||||
{
|
{
|
||||||
gm.send_key(K_CTRL + 'N', 0, &partite); // Simula la pressione del tasto nuovo
|
gm.send_key(K_CTRL + 'N', 0, &partite); // Simula la pressione del tasto nuovo
|
||||||
return FALSE; // Rifiuta l'aggiunta di una riga
|
return false; // Rifiuta l'aggiunta di una riga
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool partita_bloccata(const TPartita& game)
|
||||||
|
{
|
||||||
|
int rate = 0, bloccate = 0;
|
||||||
|
for (int i = game.last(); i > 0; i = game.pred(i))
|
||||||
|
{
|
||||||
|
const TRiga_partite& riga = game.riga(i);
|
||||||
|
if (riga.tipo() == tm_fattura)
|
||||||
|
{
|
||||||
|
for (int r = riga.rate(); r > 0; r--)
|
||||||
|
{
|
||||||
|
rate++;
|
||||||
|
const TRiga_scadenze& rata = riga.rata(r);
|
||||||
|
if (rata.get_bool(SCAD_BLOCCATA))
|
||||||
|
bloccate++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bloccate > 0 && bloccate == rate;
|
||||||
|
}
|
||||||
|
|
||||||
bool TGame_mask::scadenze_notify(TSheet_field& scadenze, int r, KEY k)
|
bool TGame_mask::scadenze_notify(TSheet_field& scadenze, int r, KEY k)
|
||||||
{
|
{
|
||||||
if (k == K_INS)
|
if (k == K_INS)
|
||||||
{
|
{
|
||||||
TGame_mask& gm = (TGame_mask&)scadenze.mask();
|
TGame_mask& gm = (TGame_mask&)scadenze.mask();
|
||||||
|
#ifndef __EXTRA__
|
||||||
|
const TCausale& causale = app().causale();
|
||||||
|
const tipo_movimento tm = (tipo_movimento)causale.tipomov();
|
||||||
|
if (tm == tm_pagamento)
|
||||||
|
{
|
||||||
|
const TPartita* game = gm.partita_corrente();
|
||||||
|
if (game && partita_bloccata(*game))
|
||||||
|
return error_box(TR("Le rate della partita risultano bloccate"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
gm.send_key(K_CTRL + 'N', 0, &scadenze); // Simula la pressione del tasto nuovo
|
gm.send_key(K_CTRL + 'N', 0, &scadenze); // Simula la pressione del tasto nuovo
|
||||||
return FALSE; // Rifiuta l'aggiunta di una riga
|
return false; // Rifiuta l'aggiunta di una riga
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1397,8 +1439,9 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
if (m.get_bool(114))
|
if (m.get_bool(114))
|
||||||
{
|
{
|
||||||
if (was == NULL) giochi.destroy(game);
|
if (was == NULL)
|
||||||
return f.error_box(FR("La rata %d e' bloccata."), nrata);
|
giochi.destroy(game);
|
||||||
|
return f.error_box(FR("La rata %d risulta bloccata."), nrata);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __EXTRA__
|
#ifndef __EXTRA__
|
||||||
@ -1414,7 +1457,7 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tipo_movimento tm;
|
tipo_movimento tm = tm_pagamento;
|
||||||
#ifdef __EXTRA__
|
#ifdef __EXTRA__
|
||||||
TMask* nm = new TNew_mask(gm.conto().tipo(), FALSE, FALSE);
|
TMask* nm = new TNew_mask(gm.conto().tipo(), FALSE, FALSE);
|
||||||
nm->set(P_ANNO, game.anno());
|
nm->set(P_ANNO, game.anno());
|
||||||
@ -1427,7 +1470,7 @@ bool TGame_mask::edit_scadenza_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
if (was == NULL)
|
if (was == NULL)
|
||||||
giochi.destroy(game);
|
giochi.destroy(game);
|
||||||
return FALSE;
|
return false;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
tm = (tipo_movimento)app().causale().tipomov();
|
tm = (tipo_movimento)app().causale().tipomov();
|
||||||
@ -1530,7 +1573,7 @@ bool TGame_mask::nuovo_handler(TMask_field& f, KEY k)
|
|||||||
else
|
else
|
||||||
new_game->init(gm.conto().tipo(), allow_fatt, TRUE);
|
new_game->init(gm.conto().tipo(), allow_fatt, TRUE);
|
||||||
|
|
||||||
tipo_movimento tm;
|
tipo_movimento tm = tm_pagamento;
|
||||||
|
|
||||||
#ifndef __EXTRA__
|
#ifndef __EXTRA__
|
||||||
const TMask& cm = app().curr_mask();
|
const TMask& cm = app().curr_mask();
|
||||||
@ -1555,7 +1598,9 @@ bool TGame_mask::nuovo_handler(TMask_field& f, KEY k)
|
|||||||
{
|
{
|
||||||
// Creazione nuova partita
|
// Creazione nuova partita
|
||||||
TPartita& game = app().partite().partita(gm.conto(), anno, numero);
|
TPartita& game = app().partite().partita(gm.conto(), anno, numero);
|
||||||
|
if (tm == tm_pagamento && partita_bloccata(game))
|
||||||
|
return error_box(TR("Le rate di questa partita risultano bloccate"));
|
||||||
|
|
||||||
bool edit = FALSE;
|
bool edit = FALSE;
|
||||||
// N.B. Le fatture non possone essere editate in modo contabile
|
// N.B. Le fatture non possone essere editate in modo contabile
|
||||||
if (tm != tm_fattura)
|
if (tm != tm_fattura)
|
||||||
@ -1934,6 +1979,9 @@ void TGame_mask::fill_partite()
|
|||||||
|
|
||||||
bool TGame_mask::edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const
|
bool TGame_mask::edit_pagamento(TPartita& p, int nriga, int nrata, int nrigp) const
|
||||||
{
|
{
|
||||||
|
if (nrigp <= 0)
|
||||||
|
return false;
|
||||||
|
|
||||||
TRectype oldpag = p.pagamento(nriga, nrata, nrigp);
|
TRectype oldpag = p.pagamento(nriga, nrata, nrigp);
|
||||||
TRiga_partite& somma = p.riga(nrigp);
|
TRiga_partite& somma = p.riga(nrigp);
|
||||||
|
|
||||||
@ -2176,24 +2224,28 @@ bool TPrimanota_application::edit_partite(const TMask& m, int riga)
|
|||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
{
|
{
|
||||||
|
TSheet_field& s = cgs();
|
||||||
|
|
||||||
if (m.field(CG_DESCR).empty())
|
if (m.field(CG_DESCR).empty())
|
||||||
{
|
{
|
||||||
TString descr;
|
TString descr;
|
||||||
if (genera_riferimento(riga, descr))
|
if (genera_riferimento(riga, descr))
|
||||||
{
|
{
|
||||||
TSheet_field& s = cgs();
|
const int idx = s.cid2index(CG_DESCR);
|
||||||
s.row(riga).add(descr, CG_DESCR-101);
|
TToken_string& sr = s.row(riga);
|
||||||
TBill conto; conto.get(s.row(riga), 2, 0x3);
|
sr.add(descr, idx);
|
||||||
|
TBill conto; conto.get(sr, 2, 0x3);
|
||||||
for (int r = riga+1; r < s.items(); r++)
|
for (int r = riga+1; r < s.items(); r++)
|
||||||
{
|
{
|
||||||
TBill contro; contro.get(s.row(r), 9, 0x3);
|
TToken_string& sr = s.row(r);
|
||||||
|
TBill contro; contro.get(sr, 9, 0x3);
|
||||||
if (conto == contro)
|
if (conto == contro)
|
||||||
s.row(r).add(descr, CG_DESCR-101);
|
sr.add(descr, idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cgs().force_update(); // Aggiornamento righe contabili
|
s.force_update(); // Aggiornamento righe contabili
|
||||||
calcola_saldo();
|
calcola_saldo();
|
||||||
_sal_dirty = true;
|
_sal_dirty = true;
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,6 @@ static int sort_by_fields(TSheet_field& sheet, int r1, int r2, const short* cons
|
|||||||
return diff;
|
return diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int sort_by_date(TSheet_field& sheet, int r1, int r2)
|
static int sort_by_date(TSheet_field& sheet, int r1, int r2)
|
||||||
{
|
{
|
||||||
// Elenco dei campi da confrontare in ordine di priorita'
|
// Elenco dei campi da confrontare in ordine di priorita'
|
||||||
@ -1064,12 +1063,13 @@ void TEasySolder_mask::fill_sheet()
|
|||||||
|
|
||||||
if (_tipomov == tm_insoluto)
|
if (_tipomov == tm_insoluto)
|
||||||
{
|
{
|
||||||
s.set_column_header(S_IMPORTO, TR("Importo\nInsoluto"));
|
s.set_column_header(S_IMPORTO, HR("Importo\nInsoluto"));
|
||||||
s.set_column_header(S_RESIDUO, TR("Importo\nPagato"));
|
s.set_column_header(S_RESIDUO, HR("Importo\nPagato"));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s.set_column_header(S_RESIDUO, TR("Residuo\nScadenza"));
|
s.set_column_header(S_IMPORTO, HR("Importo\nPagamento"));
|
||||||
|
s.set_column_header(S_RESIDUO, HR("Residuo\nScadenza"));
|
||||||
}
|
}
|
||||||
s.set_column_justify(S_PARTITA, TPartita::allineamento_richiesto(_conto.tipo()) == 'R');
|
s.set_column_justify(S_PARTITA, TPartita::allineamento_richiesto(_conto.tipo()) == 'R');
|
||||||
|
|
||||||
|
@ -159,7 +159,8 @@ bool CG4100_App::sort_sal()
|
|||||||
{
|
{
|
||||||
if (gruppo <= 0 || conto <= 0 || sottoconto <= 0)
|
if (gruppo <= 0 || conto <= 0 || sottoconto <= 0)
|
||||||
{
|
{
|
||||||
warning_box(FR("Conto non valido alla riga %d nel movimento %ld"), rmov.get_int(RMV_NUMRIG), numreg);
|
warning_box(FR("Conto non valido alla riga %d nel movimento %ld"),
|
||||||
|
rmov.get_int(RMV_NUMRIG), numreg);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
sal.aggiorna(gruppo, conto, sottoconto, importo, sezione, true, scaricato);
|
sal.aggiorna(gruppo, conto, sottoconto, importo, sezione, true, scaricato);
|
||||||
|
@ -2501,6 +2501,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
// Prorata per l'anno corrente + quelli eventuali dello scorso anno e quelli che sono oltre 3 anni fa...
|
// Prorata per l'anno corrente + quelli eventuali dello scorso anno e quelli che sono oltre 3 anni fa...
|
||||||
// E quelli che non hanno la % prorata settata in tabella
|
// E quelli che non hanno la % prorata settata in tabella
|
||||||
real aaa = acquisti_iva;
|
real aaa = acquisti_iva;
|
||||||
|
aaa -= ammort_det_iva; // Scarta gli acquisti di beni ammortizzabili (4-9-2014)
|
||||||
if (percentuale1 != INVALID_PRORATA && percentuale1 != INVALID_PRORATA_ASSERT)
|
if (percentuale1 != INVALID_PRORATA && percentuale1 != INVALID_PRORATA_ASSERT)
|
||||||
aaa -= rr1 ? *rr1 : ZERO;
|
aaa -= rr1 ? *rr1 : ZERO;
|
||||||
if (percentuale2 != INVALID_PRORATA && percentuale2 != INVALID_PRORATA_ASSERT)
|
if (percentuale2 != INVALID_PRORATA && percentuale2 != INVALID_PRORATA_ASSERT)
|
||||||
@ -2533,7 +2534,7 @@ void TLiquidazione_app::recalc_att(int month, const char* codatt)
|
|||||||
* Il prorata pagato in annuale viene scritto a 0, perche' in realta' sarebbe
|
* Il prorata pagato in annuale viene scritto a 0, perche' in realta' sarebbe
|
||||||
* la somma di quelli pagati nei mesi precedenti.
|
* la somma di quelli pagati nei mesi precedenti.
|
||||||
*/
|
*/
|
||||||
_plm->put("R2", prorata); // Prorata complessivo (acq. rif. anno attuale + acq. rif. anni precedenti)
|
_plm->put("R2", prorata); // Prorata complessivo (acq. rif. anno attuale + acq. rif. anni precedenti)
|
||||||
_plm->put("R14", prorata_precedente1); // Prorata acq. rif. anno addietro
|
_plm->put("R14", prorata_precedente1); // Prorata acq. rif. anno addietro
|
||||||
_plm->put("R15", prorata_precedente2); // Prorata acq. rif. 2 anni addietro
|
_plm->put("R15", prorata_precedente2); // Prorata acq. rif. 2 anni addietro
|
||||||
|
|
||||||
@ -3841,8 +3842,8 @@ void TLiquidazione_app::write_liq(int month, const char* codatts)
|
|||||||
conguaglio = topay - ppg;
|
conguaglio = topay - ppg;
|
||||||
round_imposta(conguaglio);
|
round_imposta(conguaglio);
|
||||||
|
|
||||||
_pla->put("R9", conguaglio);
|
_pla->put("R9", conguaglio);
|
||||||
_pla->put("R10",prorata);
|
_pla->put("R10", prorata);
|
||||||
|
|
||||||
// Prorata delle mie brame...
|
// Prorata delle mie brame...
|
||||||
// Chi e' il piu' sfatto del reame?
|
// Chi e' il piu' sfatto del reame?
|
||||||
@ -4282,8 +4283,7 @@ void TLiquidazione_app::recalc_annual(const char* att)
|
|||||||
{
|
{
|
||||||
if (!look_plm(i,aaa))
|
if (!look_plm(i,aaa))
|
||||||
continue;
|
continue;
|
||||||
|
pro_pag += _plm->get_real("R2"); // Can't do anyway else...
|
||||||
pro_pag += _plm->get_real("R2"); // Can't do anyway else...
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modifiche per PIM13
|
// Modifiche per PIM13
|
||||||
|
@ -350,9 +350,11 @@ bool TProrata_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
|
|||||||
case F_DATAINI:
|
case F_DATAINI:
|
||||||
if (e == fe_init)
|
if (e == fe_init)
|
||||||
{
|
{
|
||||||
const TDate oggi(TODAY);
|
TDate d(TODAY); d.set_day(1); --d;
|
||||||
o.set(TDate(1,1,oggi.year()-1));
|
d.set_day(1);
|
||||||
set(F_DATAFIN, TDate(31,12,oggi.year()-1), 0x3);
|
o.set(d);
|
||||||
|
d.set_end_month();
|
||||||
|
set(F_DATAFIN, d, 0x3);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case F_DATAFIN:
|
case F_DATAFIN:
|
||||||
|
@ -797,7 +797,14 @@ TImage* TSolder_tree::image(bool selected) const
|
|||||||
case 3:
|
case 3:
|
||||||
{
|
{
|
||||||
const TRiga_scadenze* s = scadenza();
|
const TRiga_scadenze* s = scadenza();
|
||||||
id = s && s->chiusa() ? BMP_DIRDNSEL : BMP_DIRDN;
|
id = BMP_DIRDN;
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
if (s->get_bool(SCAD_BLOCCATA))
|
||||||
|
return get_res_icon(10203); // Icona di stop
|
||||||
|
if (s->chiusa())
|
||||||
|
id = BMP_DIRDNSEL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user