Gestione ripristiono stampa definitiva provvigioni

git-svn-id: svn://10.65.10.50/branches/R_10_00@23059 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2015-03-31 06:19:49 +00:00
parent 0a8e1aaec0
commit 580ae47f0d
5 changed files with 145 additions and 44 deletions

View File

@ -7,9 +7,9 @@
#include "prlib.h" #include "prlib.h"
#include <modaut.h> #include <modaut.h>
#include <mov.h>
#include <doc.h> #include <doc.h>
#include "provv.h" #include "provv.h"
#include "pr0800a.h" #include "pr0800a.h"
#include "pr0.h" #include "pr0.h"
@ -58,6 +58,7 @@ protected:
public: public:
void aggiorna_maturato(const TAggiornamento_maturato_mask &m); void aggiorna_maturato(const TAggiornamento_maturato_mask &m);
void azzera_maturato(const TAggiornamento_maturato_mask &m);
}; };
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
@ -76,7 +77,6 @@ public:
bool TAggiornamento_maturato_app::create() bool TAggiornamento_maturato_app::create()
{ {
const bool saldaconto = has_module(SCAUT, CHK_DONGLE); const bool saldaconto = has_module(SCAUT, CHK_DONGLE);
if (!saldaconto) if (!saldaconto)
return error_box(TR("Questo programma necessita del saldaconto")); return error_box(TR("Questo programma necessita del saldaconto"));
@ -98,7 +98,7 @@ static bool prov_saldata(const TRectype& prov)
return is_saldata; return is_saldata;
} }
static bool scan_func(const TRelation& rel, void* pJolly) static bool matura_func(const TRelation& rel, void* pJolly)
{ {
const TAggiornamento_maturato_mask& m = *(const TAggiornamento_maturato_mask*)pJolly; const TAggiornamento_maturato_mask& m = *(const TAggiornamento_maturato_mask*)pJolly;
TRectype& rec = rel.curr(); TRectype& rec = rel.curr();
@ -121,7 +121,6 @@ static bool scan_func(const TRelation& rel, void* pJolly)
TString80 key; key.format("D|%d|%s|%ld", anno, (const char *) codnum, ndoc); TString80 key; key.format("D|%d|%s|%ld", anno, (const char *) codnum, ndoc);
const long nreg = atol(cache().get(LF_DOC, key, DOC_NUMREG)); const long nreg = atol(cache().get(LF_DOC, key, DOC_NUMREG));
if (nreg <= 0) if (nreg <= 0)
return true; // nessuna partita??? return true; // nessuna partita???
@ -212,11 +211,13 @@ static bool scan_func(const TRelation& rel, void* pJolly)
if (changed_record) if (changed_record)
{ {
TLocalisamfile provv(LF_PROVV); TLocalisamfile& provv = rel.lfile(LF_PROVV);
provv.curr() = rec; int err = provv.reread(_lock);
int err = provv.read(_isequal, _lock);
if (err == NOERR) if (err == NOERR)
{
provv.curr() = rec;
err = rec.rewrite(provv); err = rec.rewrite(provv);
}
if (err != NOERR) if (err != NOERR)
return yesno_box(FR("Errore %d in aggioramento agente %ld, Continuare ugualmente"), err, rec.get_long(PROV_CODAGE)); return yesno_box(FR("Errore %d in aggioramento agente %ld, Continuare ugualmente"), err, rec.get_long(PROV_CODAGE));
} }
@ -241,19 +242,73 @@ void TAggiornamento_maturato_app::aggiorna_maturato(const TAggiornamento_maturat
TRelation rel(LF_PROVV); TRelation rel(LF_PROVV);
TCursor c(&rel, filter, 1, &from, &to); TCursor c(&rel, filter, 1, &from, &to);
c.setregion(from, to); c.setregion(from, to);
c.scan(scan_func, (void*)&m, TR("Aggiornamento provvigioni maturate")); c.scan(matura_func, (void*)&m, TR("Aggiornamento provvigioni maturate"));
} }
static bool azzera_func(const TRelation& rel, void* pJolly)
{
TRectype& rec = rel.curr();
const real imp_pagato = rec.get_real(PROV_PAGATO);
const real pro_pagata = rec.get_real(PROV_PROVVPAG);
if (pro_pagata > ZERO)
{
rec.put(PROV_PAGMAT, imp_pagato);
rec.put(PROV_PROVVMAT, pro_pagata);
rec.zero(PROV_PAGATO);
rec.zero(PROV_PROVVPAG);
rec.zero(PROV_SALDATA);
rec.zero(PROV_DATASTAMPA);
if (rel.lfile().rewrite() == NOERR)
{
TRecnotype& n = *(TRecnotype*)pJolly;
n++;
}
}
return true;
}
void TAggiornamento_maturato_app::azzera_maturato(const TAggiornamento_maturato_mask &m)
{
const TDate data_scad = m.get(F_DATA_SCADENZA);
const TDate data_stam = m.get(F_DATA_INIZIO);
TString filter;
if (data_stam.ok())
filter << "BETWEEN(DATASTAMPA," << data_stam.date2ansi() << ",0)";
else
filter << "BETWEEN(DATASCAD," << data_scad.date2ansi() << ",0)";
TRectype from(LF_PROVV), to(LF_PROVV);
from.put(PROV_CODAGE, m.get(F_DA_CODAGE));
to.put(PROV_CODAGE, m.get(F_A_CODAGE));
TRelation rel(LF_PROVV);
TCursor c(&rel, filter, 1, &from, &to);
TRecnotype n = 0;
c.scan(azzera_func, (void*)&n, TR("Ripristino provvigioni maturate"));
message_box(FR("Sono state ripristinate %ld righe di provvigione"), n);
}
void TAggiornamento_maturato_app::main_loop() void TAggiornamento_maturato_app::main_loop()
{ {
open_files(LF_TAB, LF_TABCOM, LF_CLIFO, LF_PARTITE, LF_SCADENZE, LF_PAGSCA, LF_DOC, 0);
TAggiornamento_maturato_mask m; TAggiornamento_maturato_mask m;
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
aggiorna_maturato(m); {
TFast_isamfile provv(LF_PROVV);
const char op = m.get(F_OPERAZIONE)[0];
if (op <= 'A')
aggiorna_maturato(m);
else
azzera_maturato(m);
}
} }
int pr0800(int argc, char** argv) int pr0800(int argc, char** argv)
{ {
TAggiornamento_maturato_app a; TAggiornamento_maturato_app a;
a.run(argc, argv, TR("Aggiornamento provvigioni maturate")); a.run(argc, argv, TR("Aggiornamento maturato"));
return 0; return 0;
} }

View File

@ -7,3 +7,6 @@
#define F_DATA_SCAD 205 #define F_DATA_SCAD 205
#define F_GIORNI_RISCHIO 206 #define F_GIORNI_RISCHIO 206
#define F_CHECK_INSOLUTI 207 #define F_CHECK_INSOLUTI 207
#define F_OPERAZIONE 208
#define F_DATA_INIZIO 209
#define F_DATA_SCADENZA 210

View File

@ -1,15 +1,14 @@
#include "pr0800a.h" #include "pr0800a.h"
TOOLBAR "" 0 0 0 2 TOOLBAR "" 0 0 0 2
#include <stdbar.h> #include <elabar.h>
ENDPAGE ENDPAGE
PAGE "Aggiornamento Maturato" 0 2 0 0 PAGE "Aggiornamento Maturato" 0 2 0 0
GROUPBOX DLG_NULL 80 6 GROUPBOX DLG_NULL 78 6
BEGIN BEGIN
PROMPT 1 1 "Selezione agenti" PROMPT 1 1 "@bSelezione agenti"
FLAGS "R"
END END
STRING F_DA_CODAGE 5 STRING F_DA_CODAGE 5
@ -62,38 +61,80 @@ BEGIN
ADD RUN PR0 -4 ADD RUN PR0 -4
END END
GROUPBOX DLG_NULL 80 5 RADIOBUTTON F_OPERAZIONE 78
BEGIN BEGIN
PROMPT 1 7 "Parametri" PROMPT 1 7 "Tipo operazione"
FLAGS "R" ITEM "A|Aggiornamento maturato"
MESSAGE HIDE,2@|SHOW,1@
ITEM "R|Ripristino pagato"
MESSAGE HIDE,1@|SHOW,2@
FLAGS "Z"
END
GROUPBOX DLG_NULL 78 6
BEGIN
PROMPT 1 10 "@bParametri aggiornamento"
GROUP 1
END END
DATE F_DATA_SCAD DATE F_DATA_SCAD
BEGIN BEGIN
PROMPT 2 8 "Data scadenza " PROMPT 2 11 "Data scadenza "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
GROUP 1
END END
NUMBER F_GIORNI_RISCHIO 2 NUMBER F_GIORNI_RISCHIO 2
BEGIN BEGIN
PROMPT 2 9 "Giorni rischio " PROMPT 42 11 "Giorni rischio "
GROUP 1
END END
BOOLEAN F_CHECK_INSOLUTI BOOLEAN F_CHECK_INSOLUTI
BEGIN BEGIN
PROMPT 2 10 "Controllo insoluti registrati dopo il pagamento delle provvigioni" PROMPT 2 12 "Controllo insoluti registrati dopo il pagamento delle provvigioni"
GROUP 1
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 2 12 "@BAttenzione se non vengono impostati giorni di rischio tutti gli effetti presentati" PROMPT 2 13 "@BAttenzione: se non si specificano i giorni di rischio,"
GROUP 1
END END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 2 13 "@Bverrano considerati pagati." PROMPT 2 14 "@Bgli effetti presentati verranno considerati pagati."
GROUP 1
END END
GROUPBOX DLG_NULL 78 4
BEGIN
PROMPT 1 10 "@bParametri ripristino"
GROUP 2
END
DATE F_DATA_INIZIO
BEGIN
PROMPT 2 11 "Data stampa definitiva "
CHECKTYPE REQUIRED
GROUP 2
MESSAGE EMPTY ENABLE,F_DATA_SCADENZA
MESSAGE CLEAR,F_DATA_SCADENZA
END
DATE F_DATA_SCADENZA
BEGIN
PROMPT 2 12 "Data scadenza "
CHECKTYPE REQUIRED
GROUP 2
MESSAGE EMPTY ENABLE,F_DATA_INIZIO
MESSAGE CLEAR,F_DATA_INIZIO
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -128,21 +128,26 @@ bool TStampa_schedeprovv::destroy()
void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur) void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur)
{ {
const TRelation * r = cur.relation(); TLocalisamfile& fprov = cur.file();
TLocalisamfile& prov = r->lfile(); TRectype& prov = fprov.curr();
TProgind barra(cur.items(),TR("Registro le provvigioni pagate")); const TRecnotype tot = cur.items();
for (int c=0; c < cur.items(); c++) TProgress_monitor barra(tot, TR("Registrazione delle provvigioni pagate"));
TDate oggi = _m->get(F_ADATA);
if (!oggi.ok())
oggi = TDate(TODAY);
for (cur = 0; cur.pos() < tot; ++cur)
{ {
cur=c; if (!barra.add_status())
barra.setstatus(c); break;
// stampa definitiva: riporta le provvigioni maturate sulle provv. pagate // stampa definitiva: riporta le provvigioni maturate sulle provv. pagate
real provv_pag, pag_pag; real provv_pag = prov.get_real(PROV_PROVVMAT);
provv_pag = prov.get_real(PROV_PROVVMAT); real pag_pag = prov.get_real(PROV_PAGMAT);
pag_pag = prov.get_real(PROV_PAGMAT);
if (!provv_pag.is_zero() if (!provv_pag.is_zero()
&& !prov.get_bool(PROV_SALDATA)) // this should never happen! && !prov.get_bool(PROV_SALDATA)) // this should never happen!
{ {
prov.reread(_lock); fprov.reread(_lock);
provv_pag += prov.get_real(PROV_PROVVPAG); provv_pag += prov.get_real(PROV_PROVVPAG);
pag_pag += prov.get_real(PROV_PAGATO); pag_pag += prov.get_real(PROV_PAGATO);
prov.put(PROV_PROVVPAG,provv_pag); prov.put(PROV_PROVVPAG,provv_pag);
@ -151,13 +156,9 @@ void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur)
prov.put(PROV_PAGMAT,0); prov.put(PROV_PAGMAT,0);
if (provv_pag>=prov.get_real(PROV_IMPPROVV)) if (provv_pag>=prov.get_real(PROV_IMPPROVV))
prov.put(PROV_SALDATA,"X"); prov.put(PROV_SALDATA,"X");
if (prov.curr().exist(PROV_DATASTAMPA)) if (prov.exist(PROV_DATASTAMPA))
{ prov.put(PROV_DATASTAMPA, oggi);
const TDate oggi = _m->get(F_ADATA); fprov.rewrite();
if (oggi.ok())
prov.put(PROV_DATASTAMPA, oggi);
}
prov.rewrite();
} }
} }
} }
@ -250,9 +251,7 @@ void TStampa_schedeprovv::print_or_preview(bool paper)
const TString& tipodoc = _m->get(F_TIPODOC); const TString& tipodoc = _m->get(F_TIPODOC);
if (tipodoc.full()) if (tipodoc.full())
{ {
//frm.cursor()->relation()->add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==\"D\"|NDOC==NDOC"); bool not_empty = filter.full();
bool not_empty = filter.full();
if (not_empty) if (not_empty)
{ {
filter.insert("("); filter.insert("(");
@ -285,7 +284,10 @@ void TStampa_schedeprovv::print_or_preview(bool paper)
frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE)); frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE));
frm.print(); frm.print();
if (_m->get(F_DEFINITIVA)[0]=='D') if (_m->get(F_DEFINITIVA)[0]=='D')
riporta_pagamenti(*frm.cursor()); {
if (yesno_box(TR("Si desidera procedere con il riporto definitivo degli importi maturati nei pagamenti?")))
riporta_pagamenti(*frm.cursor());
}
frm.cursor()->freeze(false); frm.cursor()->freeze(false);

View File

@ -18,7 +18,7 @@ BEGIN
USE LF_AGENTI USE LF_AGENTI
INPUT CODAGE F_DAAGE INPUT CODAGE F_DAAGE
DISPLAY "Codice" CODAGE DISPLAY "Codice" CODAGE
DISPLAY "Descr@50" RAGSOC DISPLAY "Descrizione@50" RAGSOC
OUTPUT F_DAAGE CODAGE OUTPUT F_DAAGE CODAGE
GROUP G_CODAGE GROUP G_CODAGE
END END