Prosegue la contabilizzazione:
corretti i controlli di input e spostati solo all'uscita della maschera. Aggiunta la contabilizzazione di sconti/omaggi/spese/prestazioni. Manca ancora la contabilizzazione dei bolli/spese di'incasso. git-svn-id: svn://10.65.10.50/trunk@3689 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9d4f0a2bcc
commit
9ec6c584c2
305
ve/ve6100.cpp
305
ve/ve6100.cpp
@ -444,7 +444,7 @@ public:
|
||||
void zero(){ _imp = 0.0; _iva = 0.0; _ali = 0.0; }
|
||||
virtual TObject* dup() const { return new TIVA_element(*this); }
|
||||
TIVA_element& operator = (TIVA_element& a);
|
||||
TIVA_element& operator += (TRiepilogo_Iva& a);
|
||||
TIVA_element& operator += (const TRiga_documento& a);
|
||||
TIVA_element() {_imp = 0.0; _iva = 0.0; _ali = 0.0;}
|
||||
~TIVA_element() {};
|
||||
};
|
||||
@ -455,10 +455,10 @@ TIVA_element& TIVA_element::operator=(TIVA_element& a)
|
||||
return *this;
|
||||
}
|
||||
|
||||
TIVA_element& TIVA_element::operator+=(TRiepilogo_Iva& a)
|
||||
TIVA_element& TIVA_element::operator+=(const TRiga_documento& a)
|
||||
// It's horrible, I know.
|
||||
{
|
||||
_imp += a.imp(); _iva += a.iva(); _ali = a.ali();
|
||||
_imp += a.imponibile(); _iva += a.imposta(); _ali = a.iva().aliquota();
|
||||
return *this;
|
||||
}
|
||||
|
||||
@ -478,6 +478,8 @@ class TContabilizzazione_app : public TApplication
|
||||
TRelation *_clifo; // relazione dei clienti e fornitori + cfven
|
||||
TLocalisamfile *_attiv, // file delle attivita' (per far funzionare TRegistro)
|
||||
*_fcaus, // file delle causale (per far funzionare TCausale)
|
||||
*_docfile, // file dei documenti (per far funzionare TDocumento)
|
||||
*_rdocfile, // file delle righe documento (per far funzionare TDocumento)
|
||||
*_frcaus, // file delle righe causali (per far funzionare TCausale)
|
||||
*_part, // file delle partite (per far funzionare TPartita)
|
||||
*_scad, // file delle scadenze (per far funzionare TPartita)
|
||||
@ -489,6 +491,8 @@ class TContabilizzazione_app : public TApplication
|
||||
*_cve, // tabella categorie di vendita
|
||||
*_val, // tabella valute estere
|
||||
*_tri, // tabella tipi di riga
|
||||
*_prs, // tabella prestazioni
|
||||
*_spp, // tabella spese
|
||||
*_caa, // tabella categorie acquisto articoli
|
||||
*_cra, // tabella categorie ricavo articoli
|
||||
*_cco; // tabella categorie contabili
|
||||
@ -519,12 +523,13 @@ 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)
|
||||
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 per aggiungere la riga iva al TAssoc_array _righe_iva
|
||||
error_type add_iva_row(const TBill& conto, TRiepilogo_Iva& ri);
|
||||
error_type add_iva_row(const TBill& conto, const TRiga_documento& r);
|
||||
// Crea le righe iva su _movimento
|
||||
error_type create_iva_rows();
|
||||
// Crea la riga di totale documento
|
||||
@ -581,12 +586,13 @@ inline TContabilizzazione_app& app() { return (TContabilizzazione_app&) main_app
|
||||
|
||||
bool TContabilizzazione_app::handle_data_range(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
if (k==K_ENTER && f.dirty())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
TDate da(m.get_date(F_DATA_INI));
|
||||
TDate a(m.get_date(F_DATA_FIN));
|
||||
if (a == botime || da == botime) return TRUE;
|
||||
m.field(F_DATA_REG).set_dirty();
|
||||
//if (a == botime || da == botime) return TRUE;
|
||||
if (a < da)
|
||||
{
|
||||
f.error_box("La data di inizio deve essere minore della data di fine.");
|
||||
@ -603,13 +609,14 @@ bool TContabilizzazione_app::handle_data_range(TMask_field& f, KEY k)
|
||||
|
||||
bool TContabilizzazione_app::handle_data_reg(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
if (k==K_ENTER && f.dirty())
|
||||
{
|
||||
TMask& m = f.mask();
|
||||
|
||||
TDate data_reg(f.get());
|
||||
if (data_reg == botime) return TRUE;
|
||||
TDate da(m.get_date(F_DATA_INI));
|
||||
//if (!da.ok()) return TRUE;
|
||||
if ((data_reg - da) > 15)
|
||||
{
|
||||
f.error_box("L'intervallo tra la data di registrazione e la data di inizio non puo' eccedere i 15 giorni.");
|
||||
@ -730,10 +737,14 @@ bool TContabilizzazione_app::create()
|
||||
_msk->set_handler(DLG_USER,handle_select);
|
||||
_num_sheet = new TArray_sheet(-1,-1,-4,-4,"Codici numerazione",
|
||||
"@1|Cod. numerazione|Descrizione@50");
|
||||
_docfile = new TLocalisamfile(LF_DOC);
|
||||
_rdocfile = new TLocalisamfile(LF_RIGHEDOC);
|
||||
_doc = new TDocumentoEsteso;
|
||||
_cpg = new TTable("%CPG");
|
||||
_tri = new TTable("%TRI");
|
||||
_val = new TTable("%VAL");
|
||||
_prs = new TTable("PRS");
|
||||
_spp = new TTable("SPP");
|
||||
_caa = new TTable("CAA");
|
||||
_cra = new TTable("CRA");
|
||||
_gmc = new TTable("GMC");
|
||||
@ -750,17 +761,13 @@ bool TContabilizzazione_app::create()
|
||||
_attiv = new TLocalisamfile(LF_ATTIV); // Altrimenti TRegistro non va!
|
||||
_anamag = new TLocalisamfile(LF_ANAMAG);
|
||||
TConfig conf(CONFIG_DITTA);
|
||||
TString val;
|
||||
|
||||
_search_seq = conf.get("RICERCACR","ve");
|
||||
|
||||
// costruisce la stringa che controlla la ricerca del conto costo/ricavo
|
||||
// Attenzione! non esegue alcun controllo di consistenza sulla corretta sequenza
|
||||
// presuppone che il programma di configurazione abbia generato correttamente
|
||||
// il tutto.
|
||||
for (int i=0; i<5;i++)
|
||||
{
|
||||
val = conf.get("RICERCACR","ve",i+1);
|
||||
if (val.not_empty()) _search_seq.add(val);
|
||||
}
|
||||
|
||||
if (_search_seq.items() == 0)
|
||||
{
|
||||
@ -769,6 +776,20 @@ bool TContabilizzazione_app::create()
|
||||
}
|
||||
_sc_enabled = conf.get_bool("GesSal","cg");
|
||||
_nump_cfg = conf.get_bool("RifPro","cg");
|
||||
|
||||
int gr,co;
|
||||
long so;
|
||||
|
||||
gr = conf.get_int("SCOPRCODCON","ve",1);
|
||||
co = conf.get_int("SCOPRCODCON","ve",2);
|
||||
so = conf.get_long("SCOPRCODCON","ve",3);
|
||||
_sco_perc_bill.set(gr,co,so);
|
||||
|
||||
gr = conf.get_int("SCOIMCODCON","ve",1);
|
||||
co = conf.get_int("SCOIMCODCON","ve",2);
|
||||
so = conf.get_long("SCOIMCODCON","ve",3);
|
||||
_sco_imp_bill.set(gr,co,so);
|
||||
|
||||
dispatch_e_menu(BAR_ITEM(1));
|
||||
return TRUE;
|
||||
}
|
||||
@ -777,6 +798,8 @@ bool TContabilizzazione_app::destroy()
|
||||
{
|
||||
if (_msk) delete _msk;
|
||||
if (_num_sheet) delete _num_sheet;
|
||||
if (_docfile) delete _docfile;
|
||||
if (_rdocfile) delete _rdocfile;
|
||||
if (_doc) delete _doc;
|
||||
if (_cpg) delete _cpg;
|
||||
if (_tri) delete _tri;
|
||||
@ -785,6 +808,8 @@ bool TContabilizzazione_app::destroy()
|
||||
if (_rfa) delete _rfa;
|
||||
if (_cve) delete _cve;
|
||||
if (_cco) delete _cco;
|
||||
if (_prs) delete _prs;
|
||||
if (_spp) delete _spp;
|
||||
if (_caa) delete _caa;
|
||||
if (_cra) delete _cra;
|
||||
if (_fcaus) delete _fcaus;
|
||||
@ -807,6 +832,7 @@ bool TContabilizzazione_app::menu(MENU_TAG mt)
|
||||
_data_fine = _msk->get_date(F_DATA_FIN);
|
||||
_data_reg = _msk->get_date(F_DATA_REG);
|
||||
_auto_data = _msk->get_bool(F_DATA_AUTO);
|
||||
//_data_fine++;
|
||||
contabilize();
|
||||
}
|
||||
return FALSE;
|
||||
@ -820,99 +846,132 @@ error_type TContabilizzazione_app::search_costo_ricavo(TBill& conto, const TRiga
|
||||
bool skip_art_related = FALSE;
|
||||
bool skip_clifo = _clifo->bad();
|
||||
TCodiceIVA codiva(r.get("CODIVA"));
|
||||
const char t = r.tipo().tipo();
|
||||
int gr,co;
|
||||
long so;
|
||||
|
||||
// posiziona l'anagrafica sull'articolo specificato sulla ..iga
|
||||
_anamag->put("CODART",r.get("CODART"));
|
||||
if (_anamag->read() != NOERR) // se non trova l'articolo saltera' anche gmc,smc,rfa.
|
||||
skip_art_related = TRUE;
|
||||
|
||||
// Scorre la stringa di ricerca
|
||||
for (int i=0;good() && i<items;i++)
|
||||
{
|
||||
TString16 tok(_search_seq.get(i));
|
||||
if (tok == "CF")
|
||||
switch (t)
|
||||
{
|
||||
case 'O': // righe omaggio come articoli spiaccicato identico (avranno imponibile 0)
|
||||
case 'M': // righe di merce
|
||||
{
|
||||
if (skip_clifo) continue;
|
||||
gr = cli_file.get_int(CLI_GRUPPORIC);
|
||||
co = cli_file.get_int(CLI_CONTORIC);
|
||||
so = cli_file.get_long(CLI_SOTTOCRIC);
|
||||
conto.set(gr,co,so);
|
||||
if (conto.ok()) break; // se lo trova esce (tutti != 0)
|
||||
}
|
||||
else
|
||||
if (tok == "CA")
|
||||
{
|
||||
CHECK(_caus,"Orgggssbb..._caus pointer is NULL!");
|
||||
if (_caus->IVA2bill(codiva,conto)) break; // se lo trova esce
|
||||
}
|
||||
else
|
||||
if (tok == "AR")
|
||||
{
|
||||
if (skip_art_related) continue;
|
||||
gr = _anamag->get_int(is_cli ? "GRUPPOV" : "GRUPPOA");
|
||||
co = _anamag->get_int(is_cli ? "CONTOV" : "CONTOA");
|
||||
so = _anamag->get_long(is_cli ? "SOTTOCV" : "SOTTOCA");
|
||||
conto.set(gr,co,so);
|
||||
if (!conto.ok()) // se il conto non c'e' guarda la categoria acquisti/vendite
|
||||
{
|
||||
TTable *t = is_cli ? _cra : _caa;
|
||||
|
||||
t->put("CODTAB",_anamag->get(is_cli ? "CATCONV" : "CATCONA"));
|
||||
if (t->read() == NOERR)
|
||||
// posiziona l'anagrafica sull'articolo specificato sulla ..iga
|
||||
_anamag->put("CODART",r.get("CODART"));
|
||||
if (_anamag->read() != NOERR) // se non trova l'articolo saltera' anche gmc,smc,rfa.
|
||||
skip_art_related = TRUE;
|
||||
|
||||
// Scorre la stringa di ricerca
|
||||
for (int i=0;good() && i<items;i++)
|
||||
{
|
||||
TString16 tok(_search_seq.get(i));
|
||||
if (tok == "CF")
|
||||
{
|
||||
gr = atoi(t->get("S1"));
|
||||
co = atoi(t->get("S2"));
|
||||
so = atol(t->get("S3"));
|
||||
if (skip_clifo) continue;
|
||||
gr = cli_file.get_int(CLI_GRUPPORIC);
|
||||
co = cli_file.get_int(CLI_CONTORIC);
|
||||
so = cli_file.get_long(CLI_SOTTOCRIC);
|
||||
conto.set(gr,co,so);
|
||||
if (conto.ok()) break; // se lo trova esce (tutti != 0)
|
||||
}
|
||||
else
|
||||
if (tok == "CA")
|
||||
{
|
||||
CHECK(_caus,"Orgggssbb..._caus pointer is NULL!");
|
||||
if (_caus->IVA2bill(codiva,conto)) break; // se lo trova esce
|
||||
}
|
||||
else
|
||||
if (tok == "AR")
|
||||
{
|
||||
if (skip_art_related) continue;
|
||||
gr = _anamag->get_int(is_cli ? "GRUPPOV" : "GRUPPOA");
|
||||
co = _anamag->get_int(is_cli ? "CONTOV" : "CONTOA");
|
||||
so = _anamag->get_long(is_cli ? "SOTTOCV" : "SOTTOCA");
|
||||
conto.set(gr,co,so);
|
||||
if (!conto.ok()) // se il conto non c'e' guarda la categoria acquisti/vendite
|
||||
{
|
||||
TTable *t = is_cli ? _cra : _caa;
|
||||
|
||||
t->put("CODTAB",_anamag->get(is_cli ? "CATCONV" : "CATCONA"));
|
||||
if (t->read() == NOERR)
|
||||
{
|
||||
gr = atoi(t->get("S1"));
|
||||
co = atoi(t->get("S2"));
|
||||
so = atol(t->get("S3"));
|
||||
conto.set(gr,co,so);
|
||||
}
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
}
|
||||
else
|
||||
if (tok == "GM" || tok == "SM" || tok == "RF")
|
||||
{
|
||||
if (skip_art_related) continue;
|
||||
const bool is_fis = tok == "RF";
|
||||
TTable * tab = is_fis ? _rfa : _gmc;
|
||||
TString codtab(_anamag->get(is_fis ? "GRMERC" : "RAGGFIS"));
|
||||
if (tok == "GM")
|
||||
codtab.cut(2); // gli ultimi 2 si riferiscono al sottogruppo.
|
||||
tab->put("CODTAB",codtab);
|
||||
if (tab->read() == NOERR)
|
||||
{
|
||||
gr = tab->get_int(is_cli ? "I3" : "I0");
|
||||
co = tab->get_int(is_cli ? "I4" : "I1");
|
||||
so = tab->get_long(is_cli ? "I5" : "I2");
|
||||
conto.set(gr,co,so);
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
}
|
||||
else
|
||||
if (tok == "CV" || tok == "CC")
|
||||
{
|
||||
const bool is_cve = tok == "CV";
|
||||
if (is_cve && !is_cli) continue; // se e' un fornitore salta questa condizione
|
||||
TTable* t = is_cve ? _cve : _cco;
|
||||
TString cod(is_cve ? _doc->get("CATVEN") : "");
|
||||
if (cod.empty())
|
||||
{
|
||||
if (skip_clifo) continue; // se non aveva trovato il cliente salta al prossimo
|
||||
cod = _clifo->lfile(LF_CFVEN).get(is_cve ? CFV_CATVEN : CFV_CODCATC);
|
||||
}
|
||||
t->put("CODTAB",cod);
|
||||
if (t->read() == NOERR)
|
||||
{
|
||||
const bool x =(is_cve || is_cli);
|
||||
gr = t->get_int(x ? "I3" : "I0");
|
||||
co = t->get_int(x ? "I4" : "I1");
|
||||
so = t->get_long(x ? "I5": "I2");
|
||||
conto.set(gr,co,so);
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
}
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
break; // case 'M'
|
||||
}
|
||||
else
|
||||
if (tok == "GM" || tok == "SM" || tok == "RF")
|
||||
case 'P': // righe prestazione
|
||||
case 'S': // righe spese
|
||||
{
|
||||
if (skip_art_related) continue;
|
||||
const bool is_fis = tok == "RF";
|
||||
TTable * tab = is_fis ? _rfa : _gmc;
|
||||
TString codtab(_anamag->get(is_fis ? "GRMERC" : "RAGGFIS"));
|
||||
if (tok == "GM")
|
||||
codtab.cut(2); // gli ultimi 2 si riferiscono al sottogruppo.
|
||||
tab->put("CODTAB",codtab);
|
||||
if (tab->read() == NOERR)
|
||||
TTable* tab = t == 'P' ? _prs : _spp;
|
||||
tab->put("CODTAB",r.get("CODART"));
|
||||
if (tab->read())
|
||||
{
|
||||
gr = tab->get_int(is_cli ? "I3" : "I0");
|
||||
co = tab->get_int(is_cli ? "I4" : "I1");
|
||||
so = tab->get_long(is_cli ? "I5" : "I2");
|
||||
gr = tab->get_int(is_cli ? "I0" : "I3");
|
||||
co = tab->get_int(is_cli ? "I1" : "I4");
|
||||
so = tab->get_long(is_cli ? "I2" : "I5");
|
||||
conto.set(gr,co,so);
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
break; // case 'P','S'
|
||||
}
|
||||
else
|
||||
if (tok == "CV" || tok == "CC")
|
||||
{
|
||||
const bool is_cve = tok == "CV";
|
||||
if (is_cve && !is_cli) continue; // se e' un fornitore salta questa condizione
|
||||
TTable* t = is_cve ? _cve : _cco;
|
||||
TString cod(is_cve ? _doc->get("CATVEN") : "");
|
||||
if (cod.empty())
|
||||
{
|
||||
if (skip_clifo) continue; // se non aveva trovato il cliente salta al prossimo
|
||||
cod = _clifo->lfile(LF_CFVEN).get(is_cve ? CFV_CATVEN : CFV_CODCATC);
|
||||
}
|
||||
t->put("CODTAB",cod);
|
||||
if (t->read() == NOERR)
|
||||
{
|
||||
const bool x =(is_cve || is_cli);
|
||||
gr = t->get_int(x ? "I3" : "I0");
|
||||
co = t->get_int(x ? "I4" : "I1");
|
||||
so = t->get_long(x ? "I5": "I2");
|
||||
conto.set(gr,co,so);
|
||||
}
|
||||
if (conto.ok()) break;
|
||||
}
|
||||
}
|
||||
case 'C': // righe sconti (TBI) (reperire l'imposta e l'imponibile normalizzare. Il conto e' nei parametri)
|
||||
// quale sconto deve reperire dalla configurazione? Sconto ad importo o sconto a percentuale?
|
||||
if (!r.get("SCONTO").empty()) // se c'e' la percentuale reperisce il conto dello sconto a percentuale
|
||||
conto = _sco_perc_bill;
|
||||
else // altrimenti quello dello sconto ad importo
|
||||
conto = _sco_imp_bill;
|
||||
break; // case 'C'
|
||||
case 'D': // righe descrizioni (saltare)
|
||||
default :
|
||||
break;
|
||||
} // end of switch
|
||||
if (good() && !conto.find())
|
||||
_error = conto_error;
|
||||
return _error;
|
||||
@ -1101,7 +1160,7 @@ error_type TContabilizzazione_app::compile_head_mov()
|
||||
if (registro.agenzia_viaggi()) mov_rec.put(MOV_DATA74TER,data_reg);
|
||||
mov_rec.put(MOV_NUMDOC,numdoc); mov_rec.put(MOV_TIPODOC,_caus->tipo_doc());
|
||||
mov_rec.put(MOV_CODCAUS,_caus->codice()); mov_rec.put(MOV_DESCR,descr);
|
||||
mov_rec.put(MOV_TIPOMOV,_caus->tipomov()+'0'); mov_rec.put(MOV_ANNOIVA,data_reg.year());
|
||||
mov_rec.put(MOV_TIPOMOV,char(_caus->tipomov()+'0')); mov_rec.put(MOV_ANNOIVA,data_reg.year());
|
||||
mov_rec.put(MOV_REG,registro.name());
|
||||
mov_rec.put(MOV_PROTIVA,ult_prot); mov_rec.put(MOV_CODVAL,codval);
|
||||
mov_rec.put(MOV_CAMBIO,cambio); mov_rec.put(MOV_TIPO,tipocf);
|
||||
@ -1111,7 +1170,7 @@ error_type TContabilizzazione_app::compile_head_mov()
|
||||
if (_caus->intra())
|
||||
{
|
||||
mov_rec.put(MOV_CODVALI,codval);mov_rec.put(MOV_CAMBIOI,cambio);
|
||||
real corrval(_doc->tot_imponibili(1));
|
||||
real corrval(_doc->imponibile());
|
||||
real corrlire = corrval*cambio;
|
||||
if (codval.not_empty() && codval != "LIT")
|
||||
{
|
||||
@ -1120,7 +1179,7 @@ error_type TContabilizzazione_app::compile_head_mov()
|
||||
} else
|
||||
mov_rec.put(MOV_CORRLIRE,corrval);
|
||||
}
|
||||
real totdocval(_doc->tot_documento());
|
||||
real totdocval(_doc->totale_doc());
|
||||
real totdoclit = totdocval * cambio;
|
||||
if (codval.not_empty() && codval != "LIT")
|
||||
{
|
||||
@ -1131,11 +1190,11 @@ error_type TContabilizzazione_app::compile_head_mov()
|
||||
return _error;
|
||||
}
|
||||
|
||||
error_type TContabilizzazione_app::add_iva_row(const TBill& conto, TRiepilogo_Iva& ri)
|
||||
error_type TContabilizzazione_app::add_iva_row(const TBill& conto, const TRiga_documento& r)
|
||||
// Aggiunge le righe iva all'assoc_array di raggruppamento
|
||||
{
|
||||
TIVA_element el_tmp;
|
||||
TString cod(ri.cod());
|
||||
TString cod(r.iva().codice());
|
||||
const char tipo = conto.tipo();
|
||||
const int gr = conto.gruppo();
|
||||
const int co = conto.conto();
|
||||
@ -1144,7 +1203,7 @@ error_type TContabilizzazione_app::add_iva_row(const TBill& conto, TRiepilogo_Iv
|
||||
key.format("%-4s|%c|%3d|%3d|%6ld",(const char*)cod,tipo,gr,co,so);
|
||||
const bool exists = _righe_iva.is_key(key);
|
||||
TIVA_element& el = (exists ? (TIVA_element&)_righe_iva[key] : el_tmp);
|
||||
el += ri;
|
||||
el += r;
|
||||
_righe_iva.add(key,el,exists);
|
||||
return no_error;
|
||||
}
|
||||
@ -1275,7 +1334,6 @@ error_type TContabilizzazione_app::compile_rows_mov()
|
||||
// Compila le righe
|
||||
{
|
||||
const int rows = _doc->rows();
|
||||
const TArray& sum_arr = _doc->summary_array();
|
||||
|
||||
_righe_iva.destroy(); // resetta l'assoc_array delle righe di iva
|
||||
for (int i=1; good() && i<=rows; i++) // browse all this fucked document rows
|
||||
@ -1285,28 +1343,10 @@ error_type TContabilizzazione_app::compile_rows_mov()
|
||||
_tri->put("CODTAB",tiporiga);
|
||||
if (_tri->read() == NOERR) // controlla l'esistenza della riga
|
||||
{
|
||||
char s4 = _tri->get("S4")[0];
|
||||
switch (s4)
|
||||
{
|
||||
case 'M': // righe merce
|
||||
{
|
||||
TBill conto;
|
||||
search_costo_ricavo(conto,r); // l'errore eventuale viene settato qui dentro
|
||||
if (good())
|
||||
{
|
||||
TRiepilogo_Iva& ri = (TRiepilogo_Iva&) sum_arr[i];
|
||||
add_iva_row(conto,ri);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 'S': // righe spese (TBI)
|
||||
break;
|
||||
case 'C': // righe sconti (TBI)
|
||||
break;
|
||||
case 'D':
|
||||
default :
|
||||
break;
|
||||
}
|
||||
TBill conto;
|
||||
search_costo_ricavo(conto,r); // l'errore eventuale viene settato qui dentro
|
||||
if (good())
|
||||
add_iva_row(conto,r);
|
||||
}
|
||||
else
|
||||
_error = row_type_error;
|
||||
@ -1332,9 +1372,9 @@ void TContabilizzazione_app::calc_pagament()
|
||||
TString16 codpag(head.get(MOV_CODPAG));
|
||||
TString16 data(_doc->get("DATAINSC"));
|
||||
_pagamento = new TPagamento(codpag, data);
|
||||
real totspese = _doc->tot_spese();
|
||||
real totimposte = _doc->tot_imposte();
|
||||
real totimponibili = _doc->tot_documento() - totimposte - totspese;
|
||||
real totspese = _doc->spese();
|
||||
real totimposte = _doc->imposta();
|
||||
real totimponibili = _doc->totale_doc() - totimposte - totspese;
|
||||
const bool valuta = head.get(MOV_CODVAL).not_empty();
|
||||
if (valuta)
|
||||
{
|
||||
@ -1564,11 +1604,11 @@ void TContabilizzazione_app::display_error()
|
||||
break;
|
||||
case conto_error:
|
||||
msg.format("Rilevato un conto di costo/ricavo inesistente relativamente al documento %s/%ld."
|
||||
"Verificare l'esistenza dei conti associati.",(const char*)_doc->numerazione(),_doc->numero());
|
||||
"Verificare l'esistenza dei conti associati alle righe.",(const char*)_doc->numerazione(),_doc->numero());
|
||||
break;
|
||||
case movement_error:
|
||||
msg.format("Rilevato uno sbilancio nel movimento relativamente al documento %s/%ld."
|
||||
"Verificare la correttezza degli importi.",(const char*)_doc->numerazione(),_doc->numero());
|
||||
"Verificare la correttezza degli importi delle righe.",(const char*)_doc->numerazione(),_doc->numero());
|
||||
break;
|
||||
case mov_write_error:
|
||||
msg.format("Rilevato un errore in scrittura movimento relativamente al documento %s/%ld."
|
||||
@ -1588,7 +1628,7 @@ void TContabilizzazione_app::contabilize_document()
|
||||
{
|
||||
_movimento = new TMovimentoPN_VE;
|
||||
|
||||
_doc->compile_summary(); // ricalcola il documento
|
||||
//_doc->compile_summary(); // ricalcola il documento
|
||||
|
||||
compile_head_mov();
|
||||
if (good()) compile_rows_mov();
|
||||
@ -1613,6 +1653,8 @@ void TContabilizzazione_app::contabilize()
|
||||
TLocalisamfile righe_doc(LF_RIGHEDOC);
|
||||
TRectype da(LF_DOC),a(LF_DOC);
|
||||
const long items = _num_sheet->items();
|
||||
int year_from = _data_ini.year();
|
||||
int year_to = _data_fine.year();
|
||||
TString16 codnum;
|
||||
TString msg;
|
||||
|
||||
@ -1623,11 +1665,20 @@ void TContabilizzazione_app::contabilize()
|
||||
{ // istanzia un cursore per la numerazione corrente, con i limiti di data
|
||||
codnum = _num_sheet->row(i).get(1);
|
||||
da.put("DATADOC",_data_ini);
|
||||
da.put("PROVV","D");
|
||||
da.put("ANNO",year_from);
|
||||
da.put("CODNUM",codnum);
|
||||
a.put("DATADOC",_data_fine);
|
||||
a.put("PROVV","D");
|
||||
a.put("ANNO",year_to);
|
||||
a.put("CODNUM",codnum);
|
||||
TCursor doc_cur(&doc_rel,"",3,&da,&a);
|
||||
const long cur_items = doc_cur.items(); // Scorre tutti i documenti che rientrano nell'intervallo selezionato
|
||||
if (cur_items == 0)
|
||||
{
|
||||
warning_box("Non vi sono documenti da contabilizzare per il codice numerazione %s",(const char*)codnum);
|
||||
continue;
|
||||
}
|
||||
msg = "Contabilizzazione documenti ";
|
||||
msg << codnum << " dal ";
|
||||
msg << _data_ini.string() << " al ";
|
||||
|
@ -9,7 +9,7 @@ BEGIN
|
||||
USE %ELD SELECT S3 == "TC"
|
||||
INPUT CODTAB F_CODICE_ELAB
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Descrizione@55" S0
|
||||
OUTPUT F_CODICE_ELAB CODTAB
|
||||
OUTPUT F_DESC_ELAB S0
|
||||
CHECKTYPE REQUIRED
|
||||
@ -20,11 +20,10 @@ STRING F_DESC_ELAB 50 39
|
||||
BEGIN
|
||||
PROMPT 35 2 ""
|
||||
USE %ELD KEY 2 SELECT S3 == "TC"
|
||||
INPUT S0 F_CODICE_ELAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
INPUT S0 F_DESC_ELAB
|
||||
DISPLAY "Descrizione@55" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
OUTPUT F_CODICE_ELAB CODTAB
|
||||
OUTPUT F_DESC_ELAB S0
|
||||
COPY OUTPUT F_CODICE_ELAB
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 32 4
|
||||
@ -36,14 +35,14 @@ DATE F_DATA_INI
|
||||
BEGIN
|
||||
PROMPT 2 5 "Inizio "
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
WARNING "La data di inizio e' obbligatoria"
|
||||
WARNING "La data di inizio intervallo e' obbligatoria"
|
||||
END
|
||||
|
||||
DATE F_DATA_FIN
|
||||
BEGIN
|
||||
PROMPT 2 6 "Fine "
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
WARNING "La data di fine e' obbligatoria"
|
||||
WARNING "La data di fine intervallo e' obbligatoria"
|
||||
END
|
||||
|
||||
BOOLEAN F_DATA_AUTO
|
||||
@ -58,6 +57,7 @@ BEGIN
|
||||
PROMPT 42 6 "Data registrazione "
|
||||
FLAG "A"
|
||||
VALIDATE NOT_EMPTY_FUNC
|
||||
WARNING "La data registrazione e' obbligatoria"
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
|
Loading…
x
Reference in New Issue
Block a user