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:
parent
d54d44ed34
commit
0b04b259ad
117
ef/ef0a00.cpp
117
ef/ef0a00.cpp
@ -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:
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user