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:
alex 2011-07-07 22:40:14 +00:00
parent 58b198df8c
commit 4537a36c47
9 changed files with 91 additions and 23 deletions

View File

@ -41,6 +41,8 @@
#define F_DCUP 235 #define F_DCUP 235
#define F_CIG 236 #define F_CIG 236
#define F_DCIG 237 #define F_DCIG 237
#define F_CONTSEP 238
#define F_DESCONTSEP 239
#define F_IBAN 250 #define F_IBAN 250
#define F_IBAN_STATO 251 #define F_IBAN_STATO 251

View File

@ -543,6 +543,30 @@ BEGIN
FIELD EFFCOMP FIELD EFFCOMP
END 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 ENDPAGE
PAGE "Cessionari" 0 -1 0 19 PAGE "Cessionari" 0 -1 0 19

View File

@ -110,7 +110,7 @@ class TContabilizzazione_effetti_app : public TSkeleton_application
protected: // TApplication protected: // TApplication
// Compila la testata del movimento // Compila la testata del movimento
void compile_head_mov(); void compile_head_mov(const TString & contsep);
// Compila la riga di partita // Compila la riga di partita
void compile_riga_partita(TRiga_partite& riga, const TEffetto& effetto, const TRectype& riga_effetto, int numrig); void compile_riga_partita(TRiga_partite& riga, const TEffetto& effetto, const TRectype& riga_effetto, int numrig);
// Compila la riga di pagamento // Compila la riga di pagamento
@ -150,7 +150,7 @@ protected: // TApplication
// Visualizza l'ultimo errore rilevato // Visualizza l'ultimo errore rilevato
void display_error(); void display_error();
// Contabilizza l'effetto corrente // 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 // Contabilizza gli effetti
void contabilize(); void contabilize();
// costruisce lo sheet delle distinte // costruisce lo sheet delle distinte
@ -811,7 +811,7 @@ char TContabilizzazione_effetti_app::sezione() const
return sezione; return sezione;
} }
void TContabilizzazione_effetti_app::compile_head_mov() void TContabilizzazione_effetti_app::compile_head_mov(const TString & contsep)
{ {
CHECK(_caus,"Causale non allocata"); 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_TIPODOC,_caus->tipo_doc());
mov.put(MOV_CODCAUS,_caus->codice()); mov.put(MOV_CODCAUS,_caus->codice());
mov.put(MOV_TIPOMOV,_caus->tipomov()); mov.put(MOV_TIPOMOV,_caus->tipomov());
mov.put(MOV_CONTSEP, contsep);
if (is_true_value(codval)) if (is_true_value(codval))
{ {
@ -1325,7 +1326,7 @@ int TContabilizzazione_effetti_app::sort_eff(TRecord_array& rows)
return rows.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; TDistinta& distinta = *_distinta;
TLocalisamfile& mov = _movimento->lfile(); 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 ?? const int items = distinta.items(); // Perche' sul file effetti il numero riga distinta e' un long ??
// compila la testata // 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!! // _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) 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 TEffetto& eff = distinta[_cur_dist_row];
const long codcf = eff.get_long(EFF_CODCF); const long codcf = eff.get_long(EFF_CODCF);
const char tipo = eff.get_tipo(); 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); search_clifo_bill(tipo, codcf);
if (!good()) break; if (!good()) break;
@ -1473,7 +1476,7 @@ void TContabilizzazione_effetti_app::contabilize_bill(const char tipo, const lon
_total_mov_val = ZERO; _total_mov_val = ZERO;
spese = ZERO; spese = ZERO;
// compila la testata del nuovo movimento // compila la testata del nuovo movimento
compile_head_mov(); compile_head_mov(key);
} }
} }
if (!good()) break; if (!good()) break;
@ -1505,7 +1508,24 @@ void TContabilizzazione_effetti_app::contabilize()
TToken_string& t = _dist_sheet->row(j); TToken_string& t = _dist_sheet->row(j);
const char tipo = t.get_char(1); const char tipo = t.get_char(1);
const long numero = t.get_long(2); 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()) if (!good())
display_error(); display_error();
} }

View File

@ -5,6 +5,7 @@
#define F_CODSIA 105 #define F_CODSIA 105
#define F_DESCCAUINC 106 #define F_DESCCAUINC 106
#define F_DESCCAUPAG 107 #define F_DESCCAUPAG 107
#define F_CONTSEP 108
#define F_TRANS_G 111 #define F_TRANS_G 111
#define F_TRANS_C 112 #define F_TRANS_C 112

View File

@ -6,7 +6,7 @@ ENDPAGE
PAGE "Parametri effetti" 0 2 0 0 PAGE "Parametri effetti" 0 2 0 0
GROUPBOX DLG_NULL 78 10 GROUPBOX DLG_NULL 78 11
BEGIN BEGIN
PROMPT 1 2 "@bContabilizzazione" PROMPT 1 2 "@bContabilizzazione"
END END
@ -133,6 +133,12 @@ BEGIN
ADD RUN CG0 -0 ADD RUN CG0 -0
END END
BOOLEAN F_CONTSEP
BEGIN
PROMPT 2 11 "Contabilizzazione per contabilità separata"
FIELD ContSep
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -11,6 +11,7 @@
#include <clifo.h> #include <clifo.h>
#include <cfven.h> #include <cfven.h>
#include <partite.h> #include <partite.h>
#include <mov.h>
#include <rmov.h> #include <rmov.h>
#include "../cg/cgsaldac.h" #include "../cg/cgsaldac.h"
#include "../ef/ef0301.h" #include "../ef/ef0301.h"
@ -45,7 +46,7 @@ public:
void update_total(); void update_total();
virtual bool on_key(KEY key); 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; const TDate & datapag, int& rigadist, int& rigaeff) const;
long get_free_num() const; long get_free_num() const;
void save_rate(); void save_rate();
@ -552,7 +553,7 @@ bool TPE_mask::fill_distinta(bool clear_all)
return full; 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 const TDate & datapag, int& rigadist, int& rigaeff ) const
{ {
TString16 codice; codice << tipocf << '|' << codcf; 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); const TString & eff_cup = eff.get(EFF_CUP);
found = (cup == eff_cup) && (cig == eff.get(EFF_CIG)); 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) 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_DATACAMBIO, get(F_DATACAMBIO));
neweff->put(EFF_CUP, cup); neweff->put(EFF_CUP, cup);
neweff->put(EFF_CIG, cig); neweff->put(EFF_CIG, cig);
neweff->put(EFF_CONTSEP, contsep);
} }
rigaeff = neweff->rows_r()+1; rigaeff = neweff->rows_r()+1;
return neweff->row_r(rigaeff, TRUE); 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_CODCAB, cab);
effetto.put(EFF_IBAN, iban); effetto.put(EFF_IBAN, iban);
if ((tipocf == 'C' || tipopag != 9) && (real::is_null(abi) || real::is_null(cab)))
{ if (tipocf == 'C' && tipopag == 3)
TString msg; if (real::is_null(abi) || real::is_null(cab))
msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"), {
(const char*)key, effetto.get_long(EFF_NPROGTR)); TString msg;
log.log(2, msg); msg.format(FR("Impossibile determinare ABI/CAB del %s sull'effetto %ld"),
return false; (const char*)key, effetto.get_long(EFF_NPROGTR));
} log.log(2, msg);
return false;
}
if ((tipocf == 'F' && tipopag == 9) && iban.blank()) if ((tipocf == 'F' && tipopag == 9) && iban.blank())
{ {
@ -721,13 +731,15 @@ void TPE_mask::save_rate()
if (!datapag.ok()) if (!datapag.ok())
datapag = attivo ? scad.get(SCAD_DATASCAD) : get(F_DATADIST); datapag = attivo ? scad.get(SCAD_DATASCAD) : get(F_DATADIST);
const TString cup = row->get(sheet.cid2index(F_CUP)); 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 TString cig = row->get(sheet.cid2index(F_CIG));
const TString16 contsep = mov.get(MOV_CONTSEP);
if (rigaeff <= 0) if (rigaeff <= 0)
{ {
const char tipocf = get(F_TIPOCF)[0]; const char tipocf = get(F_TIPOCF)[0];
const long codcf = row->get_long(sheet.cid2index(F_CODCF)); const long codcf = row->get_long(sheet.cid2index(F_CODCF));
TRectype& reff = new_row_effetto(distinta, tipocf, codcf, cup, cig, contsep, datapag, rigadist, rigaeff);
TRectype& reff = new_row_effetto(distinta, tipocf, codcf, cup, cig, datapag, rigadist, rigaeff);
reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO))); reff.put(REFF_ANNO, row->get(sheet.cid2index(F_ANNO)));
reff.put(REFF_NUMPART, row->get(sheet.cid2index(F_PARTITA))); reff.put(REFF_NUMPART, row->get(sheet.cid2index(F_PARTITA)));
reff.put(REFF_NRIGA, row->get(sheet.cid2index(F_RIGA))); 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_DATASCAD, datapag);
eff.put(EFF_CUP, cup); eff.put(EFF_CUP, cup);
eff.put(EFF_CIG, cig); eff.put(EFF_CIG, cig);
eff.put(EFF_CONTSEP, contsep);
check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN check_bank(eff, log); // Cerca di sistemare ABI/CAB/IBAN
TRectype& reff = eff.row_r(rigaeff); TRectype& reff = eff.row_r(rigaeff);
const real oldimp = reff.get(REFF_IMPORTO); const real oldimp = reff.get(REFF_IMPORTO);
const real oldimpval = reff.get(REFF_IMPORTOVAL); const real oldimpval = reff.get(REFF_IMPORTOVAL);
reff.put(REFF_IMPORTO, imp); reff.put(REFF_IMPORTO, imp);

View File

@ -1,3 +1,3 @@
31 31
0 0
$effetti|0|0|243|0|Effetti||| $effetti|0|0|249|0|Effetti|||

View File

@ -1,5 +1,5 @@
31 31
36 37
NPROGTR|3|7|0|Numero progressivo effetto NPROGTR|3|7|0|Numero progressivo effetto
DATASCAD|5|8|0|Data di scadenza DATASCAD|5|8|0|Data di scadenza
TIPOPAG|2|1|0|Tipo pagamento 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 DSCVAL|8|1|0|Data di scadenza intesa come data valuta beneficiario
CUP|1|15|0|Codice Unico di Progetto CUP|1|15|0|Codice Unico di Progetto
CIG|1|10|0|Codice Identificativo gara CIG|1|10|0|Codice Identificativo gara
CONTSEP|1|6|0|Contabilita' separata
4 4
NPROGTR| NPROGTR|
TIPOCF+CODCF+NPROGTR| TIPOCF+CODCF+NPROGTR|

View File

@ -39,5 +39,6 @@
#define EFF_DSCVAL "DSCVAL" #define EFF_DSCVAL "DSCVAL"
#define EFF_CUP "CUP" #define EFF_CUP "CUP"
#define EFF_CIG "CIG" #define EFF_CIG "CIG"
#define EFF_CONTSEP "CONTSEP"
#endif #endif