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_CIG 236
#define F_DCIG 237
#define F_CONTSEP 238
#define F_DESCONTSEP 239
#define F_IBAN 250
#define F_IBAN_STATO 251

View File

@ -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

View File

@ -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();
}

View File

@ -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

View File

@ -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

View File

@ -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);

View File

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

View File

@ -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|

View File

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