Aggiunta contabilizzazione spese di incasso e bolli.

git-svn-id: svn://10.65.10.50/trunk@3766 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1996-10-12 11:52:03 +00:00
parent 070cb8ede0
commit 8767aec9c8

View File

@ -467,6 +467,8 @@ TIVA_element& TIVA_element::operator+=(const TRiga_documento& a)
class TContabilizzazione_app : public TApplication
{
TString16 _cod_el; // codice elaborazione immesso
TString16 _spin_cod, // codice iva spese d'incasso
_spbo_cod; // codice iva spese bolli
TDate _data_reg; // data di registrazione immessa
TDate _data_ini; // data di inizio intervallo
TDate _data_fine; // data di fine intervallo
@ -496,7 +498,7 @@ class TContabilizzazione_app : public TApplication
*_caa, // tabella categorie acquisto articoli
*_cra, // tabella categorie ricavo articoli
*_cco; // tabella categorie contabili
TDocumentoEsteso *_doc; // documento corrente
TDocumento *_doc; // documento corrente
TMovimentoPN_VE *_movimento; // movimento di prima nota costruito sul documento corrente
TPagamento *_pagamento; // pagamento corrente, ricalcolato prima di scrivere le scadenze
TAssoc_array _righe_iva; // array per la memorizzazione delle righe iva raggruppate in codesto modo:
@ -523,11 +525,17 @@ class TContabilizzazione_app : public TApplication
// Gli utlimi 6 fanno parte della ricerca per costi ricavi, in particolare AR,GM,SM e RF
// non possono essere interrotti da CV o CC. Ad es. CA|CF|AR|CV|GM|CC|RF non e' valida come stringa
// di ricerca.
TBill _sco_perc_bill, _sco_imp_bill; // Conti per gli sconti a percentuale ed importi (dalla configurazione)
TBill _sco_perc_bill, _sco_imp_bill, // Conti per gli sconti a percentuale ed importi (dalla configurazione)
_spin_billa, _spin_billv,
_spbo_billa, _spbo_billv;
protected: // TApplication
bool sc_enabled() const ;
// Funzione per ricercare il conto di costo/ricavo
error_type search_costo_ricavo(TBill& conto, const TRiga_documento& r);
// Funzione atomica per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva
void calculate_spese(real& spese, real& sp_iva, int ndec, bool is_incasso);
// Funzione per aggiungere le righe di spese d'incasso e bolli al TAssoc_array _righe_iva (chiama calculate_spese())
error_type add_spese_inbo();
// Funzione per aggiungere la riga iva al TAssoc_array _righe_iva
error_type add_iva_row(const TBill& conto, const TRiga_documento& r);
// Crea le righe iva su _movimento
@ -739,7 +747,7 @@ bool TContabilizzazione_app::create()
"@1|Cod. numerazione|Descrizione@50");
_docfile = new TLocalisamfile(LF_DOC);
_rdocfile = new TLocalisamfile(LF_RIGHEDOC);
_doc = new TDocumentoEsteso;
_doc = new TDocumento;
_cpg = new TTable("%CPG");
_tri = new TTable("%TRI");
_val = new TTable("%VAL");
@ -790,6 +798,29 @@ bool TContabilizzazione_app::create()
so = conf.get_long("SCOIMCODCON","ve",3);
_sco_imp_bill.set(gr,co,so);
gr = conf.get_int("SPINCODCONA","ve",1);
co = conf.get_int("SPINCODCONA","ve",2);
so = conf.get_long("SPINCODCONA","ve",3);
_spin_billa.set(gr,co,so);
gr = conf.get_int("SPINCODCONV","ve",1);
co = conf.get_int("SPINCODCONV","ve",2);
so = conf.get_long("SPINCODCONV","ve",3);
_spin_billv.set(gr,co,so);
gr = conf.get_int("SPBOCODCONA","ve",1);
co = conf.get_int("SPBOCODCONA","ve",2);
so = conf.get_long("SPBOCODCONA","ve",3);
_spbo_billa.set(gr,co,so);
gr = conf.get_int("SPBOCODCONV","ve",1);
co = conf.get_int("SPBOCODCONV","ve",2);
so = conf.get_long("SPBOCODCONV","ve",3);
_spbo_billv.set(gr,co,so);
_spin_cod = conf.get("SPINCODIVA","ve");
_spbo_cod = conf.get("SPBOCODIVA","ve");
dispatch_e_menu(BAR_ITEM(1));
return TRUE;
}
@ -841,7 +872,7 @@ bool TContabilizzazione_app::menu(MENU_TAG mt)
error_type TContabilizzazione_app::search_costo_ricavo(TBill& conto, const TRiga_documento& r)
{
const int items = _search_seq.items();
TLocalisamfile & cli_file = _clifo->lfile();
TLocalisamfile & cli_file = _clifo->lfile(); // YES, arriva qui dentro quando la relazione e' gia' posizionata
const bool is_cli = cli_file.get(CLI_TIPOCF) == "C";
bool skip_art_related = FALSE;
bool skip_clifo = _clifo->bad();
@ -1190,6 +1221,53 @@ error_type TContabilizzazione_app::compile_head_mov()
return _error;
}
void TContabilizzazione_app::calculate_spese(real& spese, real& sp_iva, int ndec, bool is_incasso)
{
char tipo;
int gr,co;
long so;
const bool is_cli = _doc->get("TIPOCF") == "C";
const TBill& zio = is_incasso ? (is_cli ? _spin_billv : _spin_billa) : (is_cli ? _spbo_billv : _spbo_billa);
TIVA sp_cod(is_incasso ? _spin_cod : _spbo_cod);
TIVA_element el_tmp;
TString key;
sp_iva = iva(spese,sp_cod,ndec);
tipo = zio.tipo();
gr = zio.gruppo();
co = zio.conto();
so = zio.sottoconto();
key.format("%-4s|%c|%3d|%3d|%6ld",(const char*)sp_cod.codice(),tipo,gr,co,so);
const bool exists = _righe_iva.is_key(key);
TIVA_element& el = (exists ? (TIVA_element&)_righe_iva[key] : el_tmp);
el.imp() = spese;
el.iva() = sp_iva;
el.ali() = sp_cod.aliquota();
_righe_iva.add(key,el,exists);
}
error_type TContabilizzazione_app::add_spese_inbo()
// Aggiunge le righe di spese incasso/bolli
{
real tot_netto, sp_incasso, sp_bolli;
real iva_sp_incasso, iva_sp_bolli;
const int ndec = _doc->in_valuta() ? 3 : 0;
// Aggiunge le spese d'incasso
tot_netto = _doc->totale_netto();
sp_incasso = _doc->spese_incasso(tot_netto,ndec, TRUE);
if (sp_incasso != 0.0)
calculate_spese(sp_incasso,iva_sp_incasso,ndec,TRUE);
// Aggiunge le spese bolli
tot_netto += sp_incasso + iva_sp_incasso;
sp_bolli = _doc->bolli(tot_netto,ndec, TRUE);
if (sp_bolli != 0)
calculate_spese(sp_bolli,iva_sp_bolli,ndec,FALSE);
return _error;
}
error_type TContabilizzazione_app::add_iva_row(const TBill& conto, const TRiga_documento& r)
// Aggiunge le righe iva all'assoc_array di raggruppamento
{
@ -1354,6 +1432,11 @@ error_type TContabilizzazione_app::compile_rows_mov()
if (good() && _righe_iva.items() == 0)
_error = no_rows_error;
// Crea le righe per le spese d'incasso e bolli
if (good())
add_spese_inbo();
// Crea le righe di IVA
if (good())
create_iva_rows();