Patch level : 12.0 1098
Files correlati : ve1.exe Commento : Corretto il calcolo dell'esposto
This commit is contained in:
parent
db711b01c9
commit
ea91243d93
@ -731,18 +731,6 @@ bool TDocument_report::msg_riepilogo_iva(TVariant_stack& stack)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDocument_report::set_datafido(const TDate& data)
|
|
||||||
{
|
|
||||||
_data_fido = data.ok() ? data : today;
|
|
||||||
|
|
||||||
TEsercizi_contabili & esc = esercizi();
|
|
||||||
|
|
||||||
if (esc.date2esc(_data_fido) == 0)
|
|
||||||
_data_fido = esc[esc.last()].fine();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool TDocument_report::msg_fido(TVariant_stack& stack)
|
bool TDocument_report::msg_fido(TVariant_stack& stack)
|
||||||
{
|
{
|
||||||
real value;
|
real value;
|
||||||
@ -886,28 +874,19 @@ static TImporto get_importo(const TISAM_recordset& partite, const char* sezione,
|
|||||||
|
|
||||||
static real calcola_esposto_da_saldaconto (const char tipocf, const long codcf, const TDate& datacalc, const int riskdays)
|
static real calcola_esposto_da_saldaconto (const char tipocf, const long codcf, const TDate& datacalc, const int riskdays)
|
||||||
{
|
{
|
||||||
//estrae le righe partita relative a pagamenti successivi alla data di rischio (e con tipopag >2,<7)
|
// //data considerante i giorni di rischio ammessi dall'utonto
|
||||||
|
TDate data_sbf = datacalc;
|
||||||
|
TImporto esposto; //importone somma degli importi delle righe del recordset
|
||||||
|
|
||||||
|
//estrae le righe partita relative a pagamenti successivi alla data di rischio (e con tipopag >2,<7)
|
||||||
TString query;
|
TString query;
|
||||||
query << "USE PART\nSELECT BETWEEN(DATAPAG,#DATASBF,0)&&BETWEEN(TIPOPAG,2,7)\n";
|
query << "USE PART\n";
|
||||||
query << "FROM TIPOC=#TIPOCF GRUPPO=0 CONTO=0 SOTTOCONTO=#CODCF ANNO=#ANNO\n";
|
query << "FROM " << PART_TIPOCF << "=" << "\"" << tipocf << "\"" << PART_GRUPPO << "=0" << PART_CONTO << "=0" << PART_SOTTOCONTO << "=" << codcf << "\n";
|
||||||
query << "TO TIPOC=#TIPOCF GRUPPO=0 CONTO=0 SOTTOCONTO=#CODCF";
|
query << "TO " << PART_TIPOCF << "=" << "\"" << tipocf << "\"" << PART_GRUPPO << "=0" << PART_CONTO << "=0" << PART_SOTTOCONTO << "=" << codcf << "\n";
|
||||||
|
|
||||||
TISAM_recordset partite(query);
|
TISAM_recordset partite(query);
|
||||||
|
|
||||||
TString4 str_tipocf = tipocf;
|
data_sbf -= riskdays;
|
||||||
partite.set_var("#TIPOCF", TVariant(str_tipocf));
|
|
||||||
partite.set_var("#CODCF", codcf);
|
|
||||||
partite.set_var("#DATACALC", datacalc);
|
|
||||||
//data considerante i giorni di rischio ammessi dall'utonto
|
|
||||||
TDate data_sbf = datacalc;
|
|
||||||
data_sbf -= riskdays;
|
|
||||||
partite.set_var("#DATASBF", data_sbf); //data salvo buon fine
|
|
||||||
partite.set_var("#ANNO", TVariant((long)data_sbf.year()));
|
|
||||||
|
|
||||||
|
|
||||||
//importone somma degli importi delle righe del recordset
|
|
||||||
TImporto importone_esposto;
|
|
||||||
|
|
||||||
for (bool ok = partite.move_first(); ok; ok = partite.move_next())
|
for (bool ok = partite.move_first(); ok; ok = partite.move_next())
|
||||||
{
|
{
|
||||||
TImporto importo_riga;
|
TImporto importo_riga;
|
||||||
@ -915,33 +894,32 @@ static real calcola_esposto_da_saldaconto (const char tipocf, const long codcf,
|
|||||||
//fatture,note di credito,pagamenti
|
//fatture,note di credito,pagamenti
|
||||||
TImporto importo_partita = get_importo(partite, PART_SEZ, PART_IMPORTO);
|
TImporto importo_partita = get_importo(partite, PART_SEZ, PART_IMPORTO);
|
||||||
importo_riga += importo_partita;
|
importo_riga += importo_partita;
|
||||||
|
const tipo_movimento tipo_mov = (tipo_movimento) partite.get_int(PART_TIPOMOV);
|
||||||
|
const tipo_pagamento tipo_pag = (tipo_pagamento) partite.get_int(PART_TIPOPAG);
|
||||||
|
const TDate datapag = partite.get_date(PART_DATAPAG);
|
||||||
|
|
||||||
//pagamenti (tm=3), insoluti (tm=5), pagamenti insoluti(tm=6)
|
//pagamenti (tm=3), insoluti (tm=5), pagamenti insoluti(tm=6)
|
||||||
if (partite.get(PART_TIPOMOV).as_int() >= tm_pagamento)
|
if ((tipo_mov >= tm_pagamento) &&
|
||||||
|
(tipo_pag >= tp_tratta && tipo_pag <= tp_rid) &&
|
||||||
|
((datapag >= data_sbf) && (datapag <= datacalc)))
|
||||||
{
|
{
|
||||||
TImporto importo_abbuono = get_importo(partite, PART_SEZABB, PART_ABBUONI);
|
TImporto importo_abbuono = get_importo(partite, PART_SEZABB, PART_ABBUONI);
|
||||||
importo_riga += importo_abbuono;
|
importo_riga += importo_abbuono;
|
||||||
//pagamenti in valuta
|
|
||||||
if (!partite.get(PART_CODVAL).is_empty())
|
if (!partite.get(PART_CODVAL).is_empty()) // pagamenti in valuta
|
||||||
{
|
{
|
||||||
TImporto importo_diff_cambio = get_importo(partite, PART_SEZDIFCAM, PART_DIFFCAM);
|
TImporto importo_diff_cambio = get_importo(partite, PART_SEZDIFCAM, PART_DIFFCAM);
|
||||||
importo_riga += importo_diff_cambio;
|
importo_riga += importo_diff_cambio;
|
||||||
}
|
}
|
||||||
}
|
//somma importi presenti sulla riga partita (fatture, pagamenti, insoluti, pagamenti insoluti)
|
||||||
|
esposto += importo_riga;
|
||||||
//somma importi presenti sulla riga partita (fatture, pagamenti, insoluti, pagamenti insoluti)
|
}
|
||||||
importone_esposto += importo_riga;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//la normalizzazione del totale delle partite va fatta in base al fatto che si parli di 'C'liente o 'F'ornitore
|
//la normalizzazione del totale delle partite va fatta in base al fatto che si parli di 'C'liente o 'F'ornitore
|
||||||
const char sezione_finale = (tipocf == 'C') ? 'A' : 'D';
|
const char sezione_finale = (tipocf == 'C') ? 'A' : 'D';
|
||||||
importone_esposto.normalize(sezione_finale);
|
|
||||||
|
|
||||||
//valore in output
|
|
||||||
real esposto;
|
|
||||||
esposto += importone_esposto.valore();
|
|
||||||
|
|
||||||
return esposto;
|
esposto.normalize(sezione_finale);
|
||||||
|
return esposto.valore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ protected:
|
|||||||
public:
|
public:
|
||||||
virtual bool set_recordset(const TString& query);
|
virtual bool set_recordset(const TString& query);
|
||||||
virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set);}
|
virtual bool set_recordset(TRecordset * set) { return TReport::set_recordset(set);}
|
||||||
void set_datafido(const TDate& data);
|
void set_datafido(const TDate& data) { _data_fido = data.ok() ? data : today; }
|
||||||
bool load(const char* name);
|
bool load(const char* name);
|
||||||
TDocument_report();
|
TDocument_report();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user