Modifiche alla liquidazione per corrispettivi + errori 1211 1212
git-svn-id: svn://10.65.10.50/trunk@352 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
35aabacbc8
commit
0b55fb6316
134
cg/cg4300.cpp
134
cg/cg4300.cpp
@ -25,16 +25,14 @@ void CG4300_App::user_create()
|
|||||||
|
|
||||||
for (_nditte->first(); !_nditte->eof(); _nditte->next())
|
for (_nditte->first(); !_nditte->eof(); _nditte->next())
|
||||||
{
|
{
|
||||||
TString cod = _nditte_r->get("CODDITTA");
|
|
||||||
TString vers = _nditte_r->get("FREQVIVA");
|
|
||||||
_n_ditte++;
|
_n_ditte++;
|
||||||
|
|
||||||
TToken_string* d = new TToken_string(64);
|
TToken_string* d = new TToken_string(64);
|
||||||
|
|
||||||
// add record
|
// add record
|
||||||
(*d) = cod;
|
d->add(_nditte_r->get("CODDITTA"));
|
||||||
d->add(_nditte_r->get("RAGSOC"));
|
d->add(_nditte_r->get("RAGSOC"));
|
||||||
d->add(vers);
|
d->add(_nditte_r->get("FREQVIVA"));
|
||||||
_nomiditte.add(d);
|
_nomiditte.add(d);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,20 +259,20 @@ bool CG4300_App::set_liquidazione()
|
|||||||
if (to.empty()) to = "999999";
|
if (to.empty()) to = "999999";
|
||||||
for (i = 0; i < _nomiditte.items(); i++)
|
for (i = 0; i < _nomiditte.items(); i++)
|
||||||
{
|
{
|
||||||
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
|
TToken_string& d = (TToken_string&) _nomiditte[i];
|
||||||
TString cod = d.get(0);
|
TString16 cod = d.get(0);
|
||||||
TString vers = d.get(2);
|
TString16 vers = d.get(2);
|
||||||
if ((_what == mnt && vers == "T") ||
|
if ((_what == mnt && vers == "T") ||
|
||||||
(_what == quarter && vers == "M"))
|
(_what == quarter && vers == "M"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
|
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
|
||||||
_selected.set(chk++);
|
_selected.set(chk++);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
switch(k)
|
switch(k)
|
||||||
{
|
{
|
||||||
case DLG_SELECT:
|
case DLG_SELECT:
|
||||||
@ -282,69 +280,69 @@ bool CG4300_App::set_liquidazione()
|
|||||||
_ditte->destroy(); chk = 0l;
|
_ditte->destroy(); chk = 0l;
|
||||||
for (i = 0; i < _nomiditte.items(); i++)
|
for (i = 0; i < _nomiditte.items(); i++)
|
||||||
{
|
{
|
||||||
if (_selected[i]) continue;
|
if (_selected[i]) continue;
|
||||||
TToken_string d((const TToken_string&)_nomiditte[i]);
|
TToken_string& d = (TToken_string&) _nomiditte[i];
|
||||||
TString cod = d.get(0);
|
TString16 cod = d.get(0);
|
||||||
TString vers = d.get(2);
|
TString16 vers = d.get(2);
|
||||||
if ((_what == mnt && vers == "T") ||
|
if ((_what == mnt && vers == "T") ||
|
||||||
(_what == quarter && vers == "M"))
|
(_what == quarter && vers == "M"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
_ditte->add(d);
|
||||||
|
|
||||||
_ditte->add(d);
|
// check
|
||||||
|
if (!from.empty() || !to.empty())
|
||||||
// check
|
{
|
||||||
if (!from.empty() || !to.empty())
|
if (from.empty()) from = "0";
|
||||||
{
|
if (to.empty()) to = "999999";
|
||||||
if (from.empty()) from = "0";
|
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
|
||||||
if (to.empty()) to = "999999";
|
{
|
||||||
if (atol(cod) >= atol(from) && atol(cod) <= atol(to))
|
_ditte->check(chk);
|
||||||
{
|
_selected.set(chk++);
|
||||||
_ditte->check(chk);
|
}
|
||||||
_selected.set(chk++);
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// seleziona e aggiungi alle gia' selezionate
|
// seleziona e aggiungi alle gia' selezionate
|
||||||
if (_ditte->run() == K_ENTER)
|
if (_ditte->run() == K_ENTER)
|
||||||
{
|
|
||||||
cnt = 0;
|
|
||||||
for (j = 0l; j < _n_ditte; j++)
|
|
||||||
{
|
|
||||||
if (_selected[j]) continue;
|
|
||||||
if (_ditte->checked(cnt++))
|
|
||||||
selected.set(j);
|
|
||||||
}
|
|
||||||
_selected |= selected;
|
|
||||||
selected.reset();
|
|
||||||
}
|
|
||||||
m.field(CG43_FLD_SELECTED).set(format("%ld",(long)_selected.ones()));
|
|
||||||
break;
|
|
||||||
case CG43_BUT_ANN:
|
|
||||||
_selected.reset();
|
|
||||||
m.field(CG43_FLD_SELECTED).set("0");
|
|
||||||
break;
|
|
||||||
case CG43_BUT_CHK:
|
|
||||||
{
|
{
|
||||||
_ditte->destroy();
|
cnt = 0;
|
||||||
for (i = 0; i < _nomiditte.items(); i++)
|
for (j = 0l; j < _n_ditte; j++)
|
||||||
{
|
{
|
||||||
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
|
if (_selected[j]) continue;
|
||||||
_ditte->add(d);
|
if (_ditte->checked(cnt++))
|
||||||
if (_selected[i]) _ditte->check(i);
|
selected.set(j);
|
||||||
}
|
}
|
||||||
_ditte->disable_check();
|
_selected |= selected;
|
||||||
_ditte->run();
|
selected.reset();
|
||||||
_ditte->enable_check();
|
|
||||||
}
|
}
|
||||||
break;
|
m.field(CG43_FLD_SELECTED).set(format("%ld",(long)_selected.ones()));
|
||||||
|
break;
|
||||||
|
case CG43_BUT_ANN:
|
||||||
|
_selected.reset();
|
||||||
|
m.field(CG43_FLD_SELECTED).set("0");
|
||||||
|
break;
|
||||||
|
case CG43_BUT_CHK:
|
||||||
|
{
|
||||||
|
_ditte->destroy();
|
||||||
|
for (i = 0; i < _nomiditte.items(); i++)
|
||||||
|
{
|
||||||
|
TToken_string d = (const char*)((TToken_string&)_nomiditte[i]);
|
||||||
|
_ditte->add(d);
|
||||||
|
if (_selected[i]) _ditte->check(i);
|
||||||
}
|
}
|
||||||
}
|
_ditte->disable_check();
|
||||||
while (k != K_ENTER && k != K_ESC);
|
_ditte->run();
|
||||||
|
_ditte->enable_check();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (k != K_ENTER && k != K_ESC);
|
||||||
|
|
||||||
return k == K_ENTER;
|
|
||||||
|
|
||||||
|
return k == K_ENTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cg4300(int argc, char* argv[])
|
int cg4300(int argc, char* argv[])
|
||||||
|
14
cg/cg4300.h
14
cg/cg4300.h
@ -97,6 +97,18 @@ public: // vedi sopra per le fisime morali
|
|||||||
virtual ~_VendItem() {}
|
virtual ~_VendItem() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class _CorrItem : public TObject
|
||||||
|
{
|
||||||
|
public: // vedi sopra per le fisime morali
|
||||||
|
real _totale; // totale vendite per registro
|
||||||
|
TString _codreg; // codice registro
|
||||||
|
int _month; // mese
|
||||||
|
real _aliquota; // aliquota iva
|
||||||
|
TString _codiva; // codice iva
|
||||||
|
_CorrItem() : _codreg(5) {}
|
||||||
|
virtual ~_CorrItem() {}
|
||||||
|
};
|
||||||
|
|
||||||
class _DescrItem : public TObject
|
class _DescrItem : public TObject
|
||||||
// Sembra triste e brutto esattamente come i files tabella
|
// Sembra triste e brutto esattamente come i files tabella
|
||||||
// Ma la verita' e' che non e' affatto inefficiente
|
// Ma la verita' e' che non e' affatto inefficiente
|
||||||
@ -298,6 +310,8 @@ public:
|
|||||||
// minchia di puro suino
|
// minchia di puro suino
|
||||||
void add_vendite (int month, const char* codreg, real& r);
|
void add_vendite (int month, const char* codreg, real& r);
|
||||||
void add_ventilation (real iva, real sum, const char* codiva);
|
void add_ventilation (real iva, real sum, const char* codiva);
|
||||||
|
void add_corrisp (int month, const char* codreg, real& r, real& p,
|
||||||
|
const char * codiva);
|
||||||
|
|
||||||
// printappings
|
// printappings
|
||||||
virtual void set_page(int file, int counter);
|
virtual void set_page(int file, int counter);
|
||||||
|
@ -87,6 +87,7 @@ bool CG4300_App::update_firm(int month, bool recalc)
|
|||||||
(const char*)desatt);
|
(const char*)desatt);
|
||||||
_prind->set_text(buf);
|
_prind->set_text(buf);
|
||||||
_vend_arr.destroy();
|
_vend_arr.destroy();
|
||||||
|
_corr_arr.destroy();
|
||||||
|
|
||||||
cattivs = "";
|
cattivs = "";
|
||||||
|
|
||||||
@ -261,30 +262,19 @@ void CG4300_App::recalc_att(int month, const char* codatt)
|
|||||||
for (; _cur->pos() < items; ++(*_cur))
|
for (; _cur->pos() < items; ++(*_cur))
|
||||||
{
|
{
|
||||||
TDate date(_mov_r->get("DATAREG"));
|
TDate date(_mov_r->get("DATAREG"));
|
||||||
TString reg = _mov_r->get("REG");
|
TString16 reg = _mov_r->get("REG");
|
||||||
bool isreg = look_reg(_mov_r->get("REG"));
|
bool isreg = look_reg(_mov_r->get("REG"));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check register present, rmoviva present and date OK
|
* check register present, rmoviva present and date OK
|
||||||
*/
|
*/
|
||||||
#ifndef DBG
|
const bool dok = !is_date_ok(date, month);
|
||||||
|
const bool sreg = !isreg;
|
||||||
if (!is_date_ok(date, month) ||
|
const bool rs8 = _reg_r->get("S8") != trueatt;
|
||||||
!isreg ||
|
const bool cmt = !_cur->is_first_match(LF_RMOVIVA);
|
||||||
_reg_r->get("S8") != trueatt ||
|
|
||||||
!_cur->is_first_match(LF_RMOVIVA))
|
|
||||||
continue;
|
|
||||||
#else
|
|
||||||
|
|
||||||
bool dok = !is_date_ok(date, month);
|
|
||||||
bool sreg = !isreg;
|
|
||||||
bool rs8 = _reg_r->get("S8") != trueatt;
|
|
||||||
bool cmt = !_cur->is_first_match(LF_RMOVIVA);
|
|
||||||
|
|
||||||
if (dok || sreg || rs8 || cmt) continue;
|
if (dok || sreg || rs8 || cmt) continue;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check date se si calcola l'acconto
|
* check date se si calcola l'acconto
|
||||||
*/
|
*/
|
||||||
@ -466,10 +456,12 @@ void CG4300_App::recalc_att(int month, const char* codatt)
|
|||||||
else
|
else
|
||||||
if (corrisp)
|
if (corrisp)
|
||||||
{
|
{
|
||||||
|
real perc = _iva->get_real("R0")/100.00;
|
||||||
|
|
||||||
lor += imponibile;
|
lor += imponibile;
|
||||||
lor += imposta;
|
lor += imposta;
|
||||||
_pim_r->put("I0",LORDO);
|
_pim_r->put("I0",LORDO);
|
||||||
add_corrisp(month, reg, imponibile);
|
add_corrisp(month, reg, imponibile, perc, codiva);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -834,7 +826,3 @@ _DescrItem* CG4300_App::recalc_rimborso(int month, const char* codatts)
|
|||||||
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -95,23 +95,28 @@ void CG4300_App::add_vendite(int month, const char* codreg, real& r)
|
|||||||
vi->_totale += r;
|
vi->_totale += r;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CG4300_App::add_corrisp(int month, const char* codreg, real& r)
|
void CG4300_App::add_corrisp(int month, const char* codreg, real& r,
|
||||||
|
real& p, const char * codiva)
|
||||||
{
|
{
|
||||||
_VendItem* vi = NULL;
|
_CorrItem* ci = NULL;
|
||||||
|
const int nitems = _corr_arr.items();
|
||||||
|
|
||||||
for (int i = 0; i < _vend_arr.items(); i++)
|
for (int i = 0; i < nitems; i++)
|
||||||
{
|
{
|
||||||
vi = (_VendItem*)&_corr_arr[i];
|
ci = (_CorrItem*)&_corr_arr[i];
|
||||||
if (vi->_codreg == codreg && vi->_month == month)
|
if (ci->_codreg == codreg && ci->_month == month &&
|
||||||
break;
|
ci->_codiva == codiva)
|
||||||
}
|
break;
|
||||||
if (i == _vend_arr.items())
|
}
|
||||||
{
|
if (i == nitems)
|
||||||
_corr_arr.add(vi = new _VendItem);
|
{
|
||||||
vi->_codreg = codreg;
|
_corr_arr.add(ci = new _CorrItem);
|
||||||
vi->_month = month;
|
ci->_codreg = codreg;
|
||||||
}
|
ci->_month = month;
|
||||||
vi->_totale += r;
|
ci->_codiva = codiva;
|
||||||
|
ci->_aliquota = p;
|
||||||
|
}
|
||||||
|
ci->_totale += r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -335,13 +340,19 @@ real CG4300_App::credito_prec(int month)
|
|||||||
real c(0.0);
|
real c(0.0);
|
||||||
|
|
||||||
// se c'e' un credito nei parametri ditta, si usa quello e vaffanculo
|
// se c'e' un credito nei parametri ditta, si usa quello e vaffanculo
|
||||||
TConfig cnf(CONFIG_DITTA);
|
// TConfig cnf(CONFIG_DITTA);
|
||||||
|
|
||||||
c = (const char*)cnf.get("CrIvAp");
|
// c = (const char*)cnf.get("CrIvAp");
|
||||||
if (!c.is_zero()) return c;
|
// if (!c.is_zero()) return c;
|
||||||
|
|
||||||
if (is_first_month(month))
|
if (is_first_month(month))
|
||||||
{
|
{
|
||||||
|
look_lia();
|
||||||
|
if (_lia->status() == NOERR)
|
||||||
|
{
|
||||||
|
c = _lia->get_real("R0");
|
||||||
|
if (!c.iszero()) return c;
|
||||||
|
}
|
||||||
int yr = atoi(_year) - 1;
|
int yr = atoi(_year) - 1;
|
||||||
_lim->zero();
|
_lim->zero();
|
||||||
*_lim_anno = yr;
|
*_lim_anno = yr;
|
||||||
|
@ -99,6 +99,37 @@ void CG4300_App::describe_plafond(int month, const char* codatt)
|
|||||||
// ricalcolo dei corrispettivi
|
// ricalcolo dei corrispettivi
|
||||||
void CG4300_App::recalc_corrispettivi(int month, const char* codatt)
|
void CG4300_App::recalc_corrispettivi(int month, const char* codatt)
|
||||||
{
|
{
|
||||||
|
if (_corr_arr.items() == 0) return;
|
||||||
|
// ricalcola (solo per il mese in corso!) operando sull'array
|
||||||
|
for (int i = 0; i < _corr_arr.items(); i++)
|
||||||
|
{
|
||||||
|
_CorrItem* ci = (_CorrItem*)&_corr_arr[i];
|
||||||
|
if (ci->_month != month)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
real imposta = ci->_totale/(1.00 + ci->_aliquota);
|
||||||
|
imposta.ceil(ROUND_LIRA);
|
||||||
|
real imponibile = ci->_totale - imposta;
|
||||||
|
|
||||||
|
// aggiusto l'IVA vendite nei plm
|
||||||
|
look_plm(month, codatt);
|
||||||
|
real ive = _plm->get_real("R0");
|
||||||
|
ive += imposta;
|
||||||
|
_plm->put("R0",ive);
|
||||||
|
_plm->rewrite();
|
||||||
|
|
||||||
|
// Aggiorno i luridi pim
|
||||||
|
look_pim(month, codatt, ci->_codreg, "0", ci->_codiva, TRUE);
|
||||||
|
|
||||||
|
imponibile += _pim->get_real("R0");
|
||||||
|
imposta += _pim->get_real("R1");
|
||||||
|
_pim->put("R0", imponibile);
|
||||||
|
_pim->put("R1", imposta);
|
||||||
|
_pim->zero("R2"); // e' giusto ???? TBI
|
||||||
|
// segnale per comodita'
|
||||||
|
_pim->put("B1","X");
|
||||||
|
_pim->rewrite();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ricalcolo della malefica ventilazione
|
// ricalcolo della malefica ventilazione
|
||||||
|
Loading…
x
Reference in New Issue
Block a user