Patch level : 10.0

Files correlati     : ef0.exe ef0a00a.msk
Ricompilazione Demo : [ ]
Commento            :
Aggiunto report conm possibili problemi in fase di generazione effetti, ad es:
manca ABI/CAB sul cli/fo in caso di ri.ba


git-svn-id: svn://10.65.10.50/trunk@19858 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-01-04 10:06:04 +00:00
parent d54d44ed34
commit 0b04b259ad
2 changed files with 131 additions and 83 deletions

View File

@ -5,6 +5,7 @@
#include <modaut.h>
#include <progind.h>
#include <relation.h>
#include <reputils.h>
#include <tabutil.h>
#include <clifo.h>
@ -28,7 +29,8 @@ class TPE_mask : public TAutomask
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
bool on_sheet_event(TOperable_field& o, TField_event e, long jolly);
bool check_bank(TEffetto& effetto, TLog_report& log) const;
public:
bool calc_residual(const TRiga_scadenze& scad, real& impres, real& imppag,
char& accsal, int& rdist, int& reff,
@ -477,8 +479,7 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
for (int i = 0; i < dist.items(); i++)
{
TEffetto& eff = dist[i];
if (eff.get_char(EFF_TIPOCF) == tipocf &&
eff.get_long(EFF_CODCF) == codcf)
if (eff.get_char(EFF_TIPOCF) == tipocf && eff.get_long(EFF_CODCF) == codcf)
{
neweff = &eff;
rigadist = i+1;
@ -501,14 +502,70 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf,
return neweff->row_r(rigaeff, TRUE);
}
bool TPE_mask::check_bank(TEffetto& effetto, TLog_report& log) const
{
const int tipopag = effetto.get_int(EFF_TIPOPAG);
if (tipopag != 3 && tipopag != 9) // Controllo solo ri.ba. e bonifici
return true;
TString8 abi = effetto.get(EFF_CODABI);
TString8 cab = effetto.get(EFF_CODCAB);
TString80 iban = effetto.get(EFF_IBAN);
TToken_string key;
key = effetto.get(EFF_TIPOCF);
key.add(effetto.get(EFF_CODCF));
const TRectype& clifo = cache().get(LF_CLIFO, key);
if (atol(abi) == 0 || atol(cab) == 0L)
{
abi = clifo.get(CLI_CODABI);
cab = clifo.get(CLI_CODCAB);
}
if (iban.blank())
iban = clifo.get(CLI_IBAN);
if (iban.starts_with("IT") && atol(abi)> 0 && atol(cab)>0)
{
TString16 abicab; abicab << abi << cab;
if (iban.mid(5, 10) != abicab)
iban.cut(0);
}
effetto.put(EFF_CODABI, abi);
effetto.put(EFF_CODCAB, cab);
effetto.put(EFF_IBAN, iban);
if (tipopag == 3 && (atol(abi)==0 || atol(cab)==0))
{
TString msg;
msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"),
(const char*)key, effetto.get_long(EFF_NPROGTR));
log.log(2, msg);
return false;
}
if (tipopag == 9 && iban.blank())
{
TString msg;
msg.format(FR("Impossibile determinare IBAN del %s sull'effetto %ld"),
(const char*)key, effetto.get_long(EFF_NPROGTR));
log.log(2, msg);
return false;
}
return true;
}
void TPE_mask::save_rate()
{
TLog_report log(TR("Generazione effetti"));
const char tipodist = get(F_TIPODIST)[0];
long numdist = get_long(F_DIST);
if (_is_new)
{
TLocalisamfile f(LF_EFFETTI); f.setkey(4);
while (TRUE)
while (true)
{
f.put(EFF_TIPODIST, tipodist);
f.put(EFF_NDIST, numdist);
@ -516,7 +573,8 @@ void TPE_mask::save_rate()
if (f.read() != NOERR)
break;
const long nd = get_free_num();
warning_box("La distinta %ld è già presente: verrà rinumerata in %ld", numdist, nd);
TString msg; msg.format(FR("La distinta %ld è già presente: verrà rinumerata in %ld"), numdist, nd);
log.log(1, msg);
numdist = nd;
}
_is_new = FALSE;
@ -527,6 +585,7 @@ void TPE_mask::save_rate()
const TString& codval = get(F_CODVAL);
const real cambio = get(F_CAMBIO);
const bool eurocambio = get_bool(F_EURO);
const int tipopag = get_int(F_TIPOPAG);
bool zeroes = FALSE; // Esistono righe effetto da cancellare
@ -549,8 +608,8 @@ void TPE_mask::save_rate()
{
if (rigaeff <= 0)
{
char tipocf = get(F_TIPOCF)[0];
long codcf = row->get_long(sheet.cid2index(F_CODCF));
const char tipocf = get(F_TIPOCF)[0];
const long codcf = row->get_long(sheet.cid2index(F_CODCF));
TRectype& reff = new_row_effetto(distinta, tipocf, codcf, rigadist, rigaeff);
reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO)));
@ -578,25 +637,14 @@ void TPE_mask::save_rate()
TString8 abi = scad.get(SCAD_CODABI);
TString8 cab = scad.get(SCAD_CODCAB);
key = get(F_TIPOCF);
key.add(row->get(sheet.cid2index(F_CODCF)));
key.format("%c|%ld", tipocf, codcf);
const TRectype& clifo = cache().get(LF_CLIFO, key);
TString80 iban = clifo.get(CLI_IBAN);
if (atol(cab) == 0L)
TString80 iban = clifo.get(CLI_IBAN);
if (atol(abi) == 0 || atol(cab) == 0L)
{
abi = clifo.get(CLI_CODABI);
cab = clifo.get(CLI_CODCAB);
}
else
{
if (iban.starts_with("IT"))
{
TString16 abicab; abicab << abi << cab;
if (iban.mid(5, 10) != abicab)
iban.cut(0);
}
}
TEffetto& eff = distinta[rigadist-1];
eff.put(EFF_DATASCAD, scad.get(SCAD_DATASCAD));
@ -606,6 +654,8 @@ void TPE_mask::save_rate()
}
TEffetto& eff = distinta[rigadist-1];
check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN
TRectype& reff = eff.row_r(rigaeff);
real oldimp = reff.get(REFF_IMPORTO);
real oldimpval = reff.get(REFF_IMPORTOVAL);
@ -648,11 +698,15 @@ void TPE_mask::save_rate()
if (err == NOERR)
distinta.righe().destroy(rd, TRUE);
else
error_box("Errore %d durante la cancellazione della riga %d", err, rd+1);
{
TString msg;
msg.format(FR("Errore %d durante la cancellazione della riga %d"), err, rd+1);
log.log(2, msg);
}
}
else
{
eff.put(EFF_TIPOPAG, get(F_TIPOPAG));
eff.put(EFF_TIPOPAG, tipopag);
eff.put(EFF_IMPORTO, totimp);
eff.put(EFF_IMPORTOVAL, totimpval);
eff.put(EFF_CODVAL, codval);
@ -670,6 +724,9 @@ void TPE_mask::save_rate()
dati_dist.add(get(F_ABI));
dati_dist.add(get(F_CAB));
distinta.write(FALSE, &dati_dist);
if (log.recordset()->items() > 0)
log.preview();
}
void TPE_mask::print()
@ -713,7 +770,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
m.reset(F_IMPORTO);
m.reset(F_ACCSAL);
}
_spork = TRUE;
_spork = true;
}
break;
case F_SHEET:
@ -725,7 +782,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
if (ronaldo.active())
on_field_event(ronaldo, fe_button, 0);
}
return FALSE;
return false;
case se_notify_modify:
_spork = TRUE;
update_total();
@ -737,7 +794,7 @@ bool TPE_mask::on_sheet_event(TOperable_field& o, TField_event e, long jolly)
default:
break;
}
return TRUE;
return true;
}
long TPE_mask::get_free_num() const
@ -788,8 +845,8 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
const TRectype& rec = cur.curr();
if (rec.get_bool(EFF_EFFCONT))
{
warning_box("La distinta %s è già stata contabilizzata,\n"
"per cui non è possibile modificarla", (const char*)ef.get());
warning_box(FR("La distinta %s è già stata contabilizzata,\n"
"per cui non è possibile modificarla"), (const char*)ef.get());
show(F_UNCONTABIL);
}
ok = fill_distinta(true);
@ -826,14 +883,14 @@ bool TPE_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
if (!numdist.enabled() && sfield(F_SHEET).items() > 0)
{
go = check_fields();
if (go && _spork && yesno_box("Si desidera registrare la distinta?"))
if (go && _spork && yesno_box(TR("Si desidera registrare la distinta?")))
save_rate();
}
if (go)
go = fill_rate();
}
else
return error_box("E' necessario specificare un numero di distinta");
return error_box(TR("E' necessario specificare un numero di distinta"));
}
break;
case F_CONTABILI:

View File

@ -1,6 +1,7 @@
#include "ef0A00a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_NEWREC 10 2
BEGIN
PROMPT -16 -1 "~Nuovo"
@ -32,31 +33,7 @@ BEGIN
PICTURE BMP_PRINT
END
BUTTON DLG_CANCEL 10 2
BEGIN
PROMPT -56 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -66 -1 ""
END
ENDPAGE
TOOLBAR "Toolbar" 0 -2 0 2
BUTTON F_UNCONTABIL 30 2
BEGIN
PROMPT -12 -11 "~Annulla contabilizzazione"
FLAGS "H"
END
BUTTON F_CONTABILI 30 2
BEGIN
PROMPT -22 -11 "~Contabilizzazione"
GROUP 5
END
#include <helpbar.h>
ENDPAGE
@ -235,9 +212,14 @@ BEGIN
MESSAGE COPY,F_TIPOCF
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 6 "@bSelezione effetti"
END
LIST F_TIPOCF 1 9
BEGIN
PROMPT 2 6 ""
PROMPT 2 7 ""
ITEM "C|Cliente"
ITEM "F|Fornitore"
FLAGS "D"
@ -246,7 +228,7 @@ END
NUMBER F_CLIFO 6
BEGIN
PROMPT 15 6 ""
PROMPT 15 7 ""
USE LF_CLIFO
INPUT TIPOCF F_TIPOCF SELECT
INPUT CODCF F_CLIFO
@ -255,11 +237,12 @@ BEGIN
OUTPUT F_CLIFO CODCF
OUTPUT F_RAGSOCCF RAGSOC
CHECKTYPE NORMAL
ADD RUN cg0 -1
END
STRING F_RAGSOCCF 50 37
BEGIN
PROMPT 25 6 ""
PROMPT 25 7 ""
USE LF_CLIFO KEY 2
INPUT TIPOCF F_TIPOCF SELECT
INPUT RAGSOC F_RAGSOCCF
@ -267,22 +250,23 @@ BEGIN
DISPLAY "Codice" CODCF
COPY OUTPUT F_CLIFO
CHECKTYPE NORMAL
ADD RUN cg0 -1
END
DATE F_DA_DATA
BEGIN
PROMPT 2 7 "Dal "
PROMPT 2 8 "Dal "
END
DATE F_A_DATA
BEGIN
PROMPT 20 7 "Al "
PROMPT 20 8 "Al "
FLAGS "A"
END
LISTBOX F_SORT 10
BEGIN
PROMPT 35 7 "Ordinamento "
PROMPT 35 8 "Ordinamento "
ITEM " |Standard"
ITEM "1|Scadenza"
ITEM "2|Residuo"
@ -290,13 +274,40 @@ END
BUTTON F_AGGIORNA 10 2
BEGIN
PROMPT 66 6 ""
PROMPT 66 7 ""
PICTURE BMP_SELECT
END
LIST F_TIPOPAGEFF 1 30
BEGIN
PROMPT 2 9 "Solo effetti con tipo pagamento "
ITEM " | "
ITEM "1|Rimessa Diretta"
ITEM "2|Tratta"
ITEM "3|Ricevuta Bancaria"
ITEM "4|Cessione"
ITEM "5|Paghero'"
ITEM "6|Lettera di credito"
ITEM "7|Tratta accettata"
ITEM "8|Rapporti interbancari diretti"
ITEM "9|Bonifico"
END
BUTTON F_CONTABILI 30 1
BEGIN
PROMPT 2 11 "~Contabilizzazione"
GROUP 5
END
BUTTON F_UNCONTABIL 30 1
BEGIN
PROMPT 47 11 "~Annulla contabilizzazione"
FLAGS "H"
END
SPREADSHEET F_SHEET 0 -2
BEGIN
PROMPT 0 8 ""
PROMPT 0 12 ""
ITEM "Importo@18"
ITEM "A/S@3"
ITEM "Residuo@18"
@ -326,26 +337,6 @@ END
ENDPAGE
PAGE "Selezione effetti" -1 -1 78 19
LIST F_TIPOPAGEFF 1 30
BEGIN
PROMPT 2 1 "Solo effetti con tipo pagamento "
ITEM " | "
ITEM "1|Rimessa Diretta"
ITEM "2|Tratta"
ITEM "3|Ricevuta Bancaria"
ITEM "4|Cessione"
ITEM "5|Paghero'"
ITEM "6|Lettera di credito"
ITEM "7|Tratta accettata"
ITEM "8|Rapporti interbancari diretti"
ITEM "9|Bonifico"
END
ENDPAGE
ENDMASK
PAGE "Rate" -1 -1 60 10