Patch level : 10.1048
Files correlati : ef0.exe Ricompilazione Demo : [ ] Commento : Aggiunto codice di contabilità separata sugli effetti La contabilizzaione puo' essere separata git-svn-id: svn://10.65.10.50/branches/R_10_00@22383 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
58b198df8c
commit
4537a36c47
@ -41,6 +41,8 @@
|
||||
#define F_DCUP 235
|
||||
#define F_CIG 236
|
||||
#define F_DCIG 237
|
||||
#define F_CONTSEP 238
|
||||
#define F_DESCONTSEP 239
|
||||
|
||||
#define F_IBAN 250
|
||||
#define F_IBAN_STATO 251
|
||||
|
@ -543,6 +543,30 @@ BEGIN
|
||||
FIELD EFFCOMP
|
||||
END
|
||||
|
||||
STRING F_CONTSEP 6
|
||||
BEGIN
|
||||
PROMPT 1 22 "Contab. separata "
|
||||
USE &NPENT
|
||||
INPUT CODTAB F_CONTSEP
|
||||
DISPLAY "Codice@6" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CONTSEP CODTAB
|
||||
OUTPUT F_DESCONTSEP S0
|
||||
CHECKTYPE NORMAL
|
||||
FIELD CONTSEP
|
||||
END
|
||||
|
||||
STRING F_DESCONTSEP 50 30
|
||||
BEGIN
|
||||
PROMPT 40 22 ""
|
||||
USE &NPENT KEY 2
|
||||
INPUT S0 F_DESCONTSEP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice@6" CODTAB
|
||||
COPY OUTPUT F_CONTSEP
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Cessionari" 0 -1 0 19
|
||||
|
@ -110,7 +110,7 @@ class TContabilizzazione_effetti_app : public TSkeleton_application
|
||||
|
||||
protected: // TApplication
|
||||
// Compila la testata del movimento
|
||||
void compile_head_mov();
|
||||
void compile_head_mov(const TString & contsep);
|
||||
// Compila la riga di partita
|
||||
void compile_riga_partita(TRiga_partite& riga, const TEffetto& effetto, const TRectype& riga_effetto, int numrig);
|
||||
// Compila la riga di pagamento
|
||||
@ -150,7 +150,7 @@ protected: // TApplication
|
||||
// Visualizza l'ultimo errore rilevato
|
||||
void display_error();
|
||||
// Contabilizza l'effetto corrente
|
||||
void contabilize_bill(const char tipo, const long numero);
|
||||
void contabilize_bill(const char tipo, const long numero, const TString & key = EMPTY_STRING);
|
||||
// Contabilizza gli effetti
|
||||
void contabilize();
|
||||
// costruisce lo sheet delle distinte
|
||||
@ -811,7 +811,7 @@ char TContabilizzazione_effetti_app::sezione() const
|
||||
return sezione;
|
||||
}
|
||||
|
||||
void TContabilizzazione_effetti_app::compile_head_mov()
|
||||
void TContabilizzazione_effetti_app::compile_head_mov(const TString & contsep)
|
||||
{
|
||||
CHECK(_caus,"Causale non allocata");
|
||||
|
||||
@ -864,6 +864,7 @@ void TContabilizzazione_effetti_app::compile_head_mov()
|
||||
mov.put(MOV_TIPODOC,_caus->tipo_doc());
|
||||
mov.put(MOV_CODCAUS,_caus->codice());
|
||||
mov.put(MOV_TIPOMOV,_caus->tipomov());
|
||||
mov.put(MOV_CONTSEP, contsep);
|
||||
|
||||
if (is_true_value(codval))
|
||||
{
|
||||
@ -1325,7 +1326,7 @@ int TContabilizzazione_effetti_app::sort_eff(TRecord_array& rows)
|
||||
return rows.rows();
|
||||
}
|
||||
|
||||
void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const long numero)
|
||||
void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const long numero, const TString & key)
|
||||
{
|
||||
TDistinta& distinta = *_distinta;
|
||||
TLocalisamfile& mov = _movimento->lfile();
|
||||
@ -1394,7 +1395,7 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
||||
const int items = distinta.items(); // Perche' sul file effetti il numero riga distinta e' un long ??
|
||||
|
||||
// compila la testata
|
||||
compile_head_mov();
|
||||
compile_head_mov(key);
|
||||
|
||||
// _cur_dist_row e' un int sebbene su file sia un long: TArray::items() ritorna un int!!
|
||||
for (_cur_dist_row = 0; _cur_dist_row<items; _cur_dist_row++) // scorre le righe della distinta (effetti)
|
||||
@ -1402,6 +1403,8 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
||||
const TEffetto& eff = distinta[_cur_dist_row];
|
||||
const long codcf = eff.get_long(EFF_CODCF);
|
||||
const char tipo = eff.get_tipo();
|
||||
if (ini_get_bool(CONFIG_DITTA, "ef", "ContSep") && key != eff.get(EFF_CONTSEP))
|
||||
continue;
|
||||
search_clifo_bill(tipo, codcf);
|
||||
|
||||
if (!good()) break;
|
||||
@ -1473,7 +1476,7 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
|
||||
_total_mov_val = ZERO;
|
||||
spese = ZERO;
|
||||
// compila la testata del nuovo movimento
|
||||
compile_head_mov();
|
||||
compile_head_mov(key);
|
||||
}
|
||||
}
|
||||
if (!good()) break;
|
||||
@ -1505,7 +1508,24 @@ void TContabilizzazione_effetti_app::contabilize()
|
||||
TToken_string& t = _dist_sheet->row(j);
|
||||
const char tipo = t.get_char(1);
|
||||
const long numero = t.get_long(2);
|
||||
contabilize_bill(tipo,numero);
|
||||
if (ini_get_bool(CONFIG_DITTA, "ef", "ContSep"))
|
||||
{
|
||||
_distinta->read(tipo,numero);
|
||||
|
||||
const int items = _distinta->items();
|
||||
TAssoc_array codcs;
|
||||
|
||||
for (int i = 0; i < items; i++) // scorre le righe della distinta (effetti)
|
||||
{
|
||||
const TEffetto& eff = (*_distinta)[i];
|
||||
const TString16 key = eff.get(EFF_CONTSEP);
|
||||
codcs.add(key, key);
|
||||
}
|
||||
FOR_EACH_ASSOC_STRING(codcs, obj, key, cod)
|
||||
contabilize_bill(tipo,numero, key);
|
||||
}
|
||||
else
|
||||
contabilize_bill(tipo,numero);
|
||||
if (!good())
|
||||
display_error();
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
#define F_CODSIA 105
|
||||
#define F_DESCCAUINC 106
|
||||
#define F_DESCCAUPAG 107
|
||||
#define F_CONTSEP 108
|
||||
|
||||
#define F_TRANS_G 111
|
||||
#define F_TRANS_C 112
|
||||
|
@ -6,7 +6,7 @@ ENDPAGE
|
||||
|
||||
PAGE "Parametri effetti" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 10
|
||||
GROUPBOX DLG_NULL 78 11
|
||||
BEGIN
|
||||
PROMPT 1 2 "@bContabilizzazione"
|
||||
END
|
||||
@ -133,6 +133,12 @@ BEGIN
|
||||
ADD RUN CG0 -0
|
||||
END
|
||||
|
||||
BOOLEAN F_CONTSEP
|
||||
BEGIN
|
||||
PROMPT 2 11 "Contabilizzazione per contabilità separata"
|
||||
FIELD ContSep
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
ENDMASK
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <clifo.h>
|
||||
#include <cfven.h>
|
||||
#include <partite.h>
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include "../cg/cgsaldac.h"
|
||||
#include "../ef/ef0301.h"
|
||||
@ -45,7 +46,7 @@ public:
|
||||
void update_total();
|
||||
virtual bool on_key(KEY key);
|
||||
|
||||
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TString & cup, const TString & cig,
|
||||
TRectype& new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TString & cup, const TString & cig, const TString & contsep,
|
||||
const TDate & datapag, int& rigadist, int& rigaeff) const;
|
||||
long get_free_num() const;
|
||||
void save_rate();
|
||||
@ -552,7 +553,7 @@ bool TPE_mask::fill_distinta(bool clear_all)
|
||||
return full;
|
||||
}
|
||||
|
||||
TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TString & cup, const TString & cig,
|
||||
TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, const TString & cup, const TString & cig, const TString & contsep,
|
||||
const TDate & datapag, int& rigadist, int& rigaeff ) const
|
||||
{
|
||||
TString16 codice; codice << tipocf << '|' << codcf;
|
||||
@ -573,6 +574,12 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, co
|
||||
const TString & eff_cup = eff.get(EFF_CUP);
|
||||
|
||||
found = (cup == eff_cup) && (cig == eff.get(EFF_CIG));
|
||||
}
|
||||
if (found && main_app().has_module(NPAUT))
|
||||
{
|
||||
const TString & eff_contsep = eff.get(EFF_CONTSEP);
|
||||
|
||||
found &= (contsep == eff_contsep);
|
||||
}
|
||||
if (found)
|
||||
{
|
||||
@ -595,6 +602,7 @@ TRectype& TPE_mask::new_row_effetto(TDistinta& dist, char tipocf, long codcf, co
|
||||
neweff->put(EFF_DATACAMBIO, get(F_DATACAMBIO));
|
||||
neweff->put(EFF_CUP, cup);
|
||||
neweff->put(EFF_CIG, cig);
|
||||
neweff->put(EFF_CONTSEP, contsep);
|
||||
}
|
||||
rigaeff = neweff->rows_r()+1;
|
||||
return neweff->row_r(rigaeff, TRUE);
|
||||
@ -632,14 +640,16 @@ bool TPE_mask::check_bank(TEffetto& effetto, TLog_report& log) const
|
||||
effetto.put(EFF_CODCAB, cab);
|
||||
effetto.put(EFF_IBAN, iban);
|
||||
|
||||
if ((tipocf == 'C' || tipopag != 9) && (real::is_null(abi) || real::is_null(cab)))
|
||||
{
|
||||
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 (tipocf == 'C' && tipopag == 3)
|
||||
if (real::is_null(abi) || real::is_null(cab))
|
||||
{
|
||||
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 ((tipocf == 'F' && tipopag == 9) && iban.blank())
|
||||
{
|
||||
@ -721,13 +731,15 @@ void TPE_mask::save_rate()
|
||||
if (!datapag.ok())
|
||||
datapag = attivo ? scad.get(SCAD_DATASCAD) : get(F_DATADIST);
|
||||
const TString cup = row->get(sheet.cid2index(F_CUP));
|
||||
const TRectype& mov = cache().get(LF_MOV, part.get(PART_NREG));
|
||||
const TString cig = row->get(sheet.cid2index(F_CIG));
|
||||
const TString16 contsep = mov.get(MOV_CONTSEP);
|
||||
if (rigaeff <= 0)
|
||||
{
|
||||
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, cup, cig, datapag, rigadist, rigaeff);
|
||||
TRectype& reff = new_row_effetto(distinta, tipocf, codcf, cup, cig, contsep, datapag, rigadist, rigaeff);
|
||||
|
||||
reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO)));
|
||||
reff.put(REFF_NUMPART, row->get(sheet.cid2index(F_PARTITA)));
|
||||
reff.put(REFF_NRIGA, row->get(sheet.cid2index(F_RIGA)));
|
||||
@ -751,10 +763,11 @@ void TPE_mask::save_rate()
|
||||
eff.put(EFF_DATASCAD, datapag);
|
||||
eff.put(EFF_CUP, cup);
|
||||
eff.put(EFF_CIG, cig);
|
||||
eff.put(EFF_CONTSEP, contsep);
|
||||
check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN
|
||||
|
||||
|
||||
TRectype& reff = eff.row_r(rigaeff);
|
||||
|
||||
const real oldimp = reff.get(REFF_IMPORTO);
|
||||
const real oldimpval = reff.get(REFF_IMPORTOVAL);
|
||||
reff.put(REFF_IMPORTO, imp);
|
||||
|
@ -1,3 +1,3 @@
|
||||
31
|
||||
0
|
||||
$effetti|0|0|243|0|Effetti|||
|
||||
$effetti|0|0|249|0|Effetti|||
|
||||
|
@ -1,5 +1,5 @@
|
||||
31
|
||||
36
|
||||
37
|
||||
NPROGTR|3|7|0|Numero progressivo effetto
|
||||
DATASCAD|5|8|0|Data di scadenza
|
||||
TIPOPAG|2|1|0|Tipo pagamento
|
||||
@ -36,6 +36,7 @@ IBAN|1|34|0|Codice IBAN di appoggio
|
||||
DSCVAL|8|1|0|Data di scadenza intesa come data valuta beneficiario
|
||||
CUP|1|15|0|Codice Unico di Progetto
|
||||
CIG|1|10|0|Codice Identificativo gara
|
||||
CONTSEP|1|6|0|Contabilita' separata
|
||||
4
|
||||
NPROGTR|
|
||||
TIPOCF+CODCF+NPROGTR|
|
||||
|
@ -39,5 +39,6 @@
|
||||
#define EFF_DSCVAL "DSCVAL"
|
||||
#define EFF_CUP "CUP"
|
||||
#define EFF_CIG "CIG"
|
||||
#define EFF_CONTSEP "CONTSEP"
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user