Patch level : 12.0 982
Files correlati : Commento : Ristrutturato modulo li
This commit is contained in:
parent
27abaa5446
commit
97b82a31b0
@ -1923,9 +1923,11 @@ BEGIN
|
|||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
FLAG "U"
|
FLAG "U"
|
||||||
END
|
END
|
||||||
GROUPBOX DLG_NULL 76 4
|
|
||||||
|
STRING DLG_NULL 76 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 13 "Dati lettera esenzione"
|
PROMPT 1 13 "Dati lettera esenzione"
|
||||||
|
FLAGS "DH" // NON PIU UTILIZZATI
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_VSNRPROT 7
|
STRING F_VSNRPROT 7
|
||||||
@ -1934,6 +1936,7 @@ BEGIN
|
|||||||
FIELD LF_CFVEN->VSNRPROT
|
FIELD LF_CFVEN->VSNRPROT
|
||||||
GROUP 7
|
GROUP 7
|
||||||
HELP "Vostro nr. di protocollo della lettera"
|
HELP "Vostro nr. di protocollo della lettera"
|
||||||
|
FLAGS "DH" // NON PIU UTILIZZATI
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_VSDATAREG
|
DATE F_VSDATAREG
|
||||||
@ -1942,6 +1945,7 @@ BEGIN
|
|||||||
FIELD LF_CFVEN->VSDATAREG
|
FIELD LF_CFVEN->VSDATAREG
|
||||||
GROUP 7
|
GROUP 7
|
||||||
HELP "Data di registrazione della lettera"
|
HELP "Data di registrazione della lettera"
|
||||||
|
FLAGS "DH" // NON PIU UTILIZZATI
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_NSNRPROT 7
|
STRING F_NSNRPROT 7
|
||||||
@ -1950,19 +1954,21 @@ BEGIN
|
|||||||
FIELD LF_CFVEN->NSNPROT
|
FIELD LF_CFVEN->NSNPROT
|
||||||
GROUP 7
|
GROUP 7
|
||||||
HELP "Nostro nr. di protocollo della lettera"
|
HELP "Nostro nr. di protocollo della lettera"
|
||||||
|
FLAGS "DH" // NON PIU UTILIZZATI
|
||||||
END
|
END
|
||||||
|
|
||||||
DATE F_NSDATAREG
|
DATE F_NSDATAREG
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 40 15 "Ns data registrazione "
|
PROMPT 40 13 "Ns data registrazione "
|
||||||
FIELD LF_CFVEN->NSDATAREG
|
FIELD LF_CFVEN->NSDATAREG
|
||||||
GROUP 7
|
GROUP 7
|
||||||
HELP "Data di registrazione della lettera"
|
HELP "Data di registrazione della lettera"
|
||||||
|
FLAGS "DH" // NON PIU UTILIZZATI
|
||||||
END
|
END
|
||||||
|
|
||||||
NUMBER F_CODCFFATT 6
|
NUMBER F_CODCFFATT 6
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 17 "Fatturare a "
|
PROMPT 2 13 "Fatturare a "
|
||||||
FIELD CODCFFATT
|
FIELD CODCFFATT
|
||||||
FLAGS "GR"
|
FLAGS "GR"
|
||||||
USE LF_CLIFO KEY 1
|
USE LF_CLIFO KEY 1
|
||||||
@ -1981,7 +1987,7 @@ END
|
|||||||
|
|
||||||
STRING F_DESCFFATT 50 30
|
STRING F_DESCFFATT 50 30
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 25 17 ""
|
PROMPT 25 13 ""
|
||||||
USE LF_CLIFO KEY 2
|
USE LF_CLIFO KEY 2
|
||||||
INPUT TIPOCF F_TIPOCF SELECT
|
INPUT TIPOCF F_TIPOCF SELECT
|
||||||
INPUT RAGSOC F_DESCFFATT
|
INPUT RAGSOC F_DESCFFATT
|
||||||
@ -1997,7 +2003,7 @@ END
|
|||||||
|
|
||||||
STRING F_CATFIN 2
|
STRING F_CATFIN 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 18 "Categoria finanziaria "
|
PROMPT 2 14 "Categoria finanziaria "
|
||||||
FIELD LF_CFVEN->CATFIN
|
FIELD LF_CFVEN->CATFIN
|
||||||
USE %CFI
|
USE %CFI
|
||||||
INPUT CODTAB F_CATFIN
|
INPUT CODTAB F_CATFIN
|
||||||
|
@ -1295,6 +1295,24 @@ public:
|
|||||||
~TTransfer_file();
|
~TTransfer_file();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TConti_array : private TAssoc_array
|
||||||
|
{
|
||||||
|
public: // TObject
|
||||||
|
virtual bool ok() const { return items() != 0; }
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool add(const TBill& conto, const real& importo);
|
||||||
|
real importo(const TBill& conto);
|
||||||
|
bool remove(const TBill& conto);
|
||||||
|
|
||||||
|
bool add_iva(bool det, const real& importo);
|
||||||
|
real importo_iva(bool det);
|
||||||
|
bool remove_iva(bool det);
|
||||||
|
|
||||||
|
TConti_array() {}
|
||||||
|
virtual ~TConti_array() {}
|
||||||
|
};
|
||||||
|
|
||||||
class TMovimentoPN : public TRelation
|
class TMovimentoPN : public TRelation
|
||||||
{
|
{
|
||||||
// class TMovimentoPN : public TRelation
|
// class TMovimentoPN : public TRelation
|
||||||
|
@ -2063,3 +2063,201 @@ int TMovimentoPN::remove()
|
|||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
// Aggiustamento movimenti rovinati o convertiti male
|
||||||
|
///////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
bool TConti_array::add(const TBill& conto, const real& importo)
|
||||||
|
{
|
||||||
|
const char* key = conto.string();
|
||||||
|
real* imp = (real*)objptr(key);
|
||||||
|
|
||||||
|
if (imp == nullptr)
|
||||||
|
TAssoc_array::add(key, importo);
|
||||||
|
else
|
||||||
|
*imp += importo;
|
||||||
|
return imp != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
real TConti_array::importo(const TBill& conto)
|
||||||
|
{
|
||||||
|
const char* key = conto.string();
|
||||||
|
const real* imp = (real*)objptr(key);
|
||||||
|
return imp ? *imp : ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConti_array::remove(const TBill& conto)
|
||||||
|
{
|
||||||
|
const char* key = conto.string();
|
||||||
|
return TAssoc_array::remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConti_array::add_iva(bool det, const real& importo)
|
||||||
|
{
|
||||||
|
real* imp = nullptr;
|
||||||
|
|
||||||
|
if (!importo.is_zero())
|
||||||
|
{
|
||||||
|
const char* const key = det ? "D" : "N";
|
||||||
|
|
||||||
|
imp = (real*)objptr(key);
|
||||||
|
if (imp == nullptr)
|
||||||
|
TAssoc_array::add(key, importo);
|
||||||
|
else
|
||||||
|
*imp += importo;
|
||||||
|
}
|
||||||
|
return imp != nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
real TConti_array::importo_iva(bool det)
|
||||||
|
{
|
||||||
|
const char* const key = det ? "D" : "N";
|
||||||
|
const real* imp = (real*)objptr(key);
|
||||||
|
return imp ? *imp : ZERO;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConti_array::remove_iva(bool det)
|
||||||
|
{
|
||||||
|
const char* const key = det ? "D" : "N";
|
||||||
|
return TAssoc_array::remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
real TMovimentoPN::indetraibile_al(const TString& codind, const TCausale& caus, int annodoc) const
|
||||||
|
{
|
||||||
|
int tipodet = 0;
|
||||||
|
return ::indetraibile_al(codind, caus, annodoc, tipodet);
|
||||||
|
}
|
||||||
|
|
||||||
|
int TMovimentoPN::analizza_riga_IVA(const real& imptot, const real& ivatot, const TCausale& caus,
|
||||||
|
int annodoc, const TString& codiva, const TString& codind,
|
||||||
|
real& imp_det, real& iva_det, real& imp_ind, real& iva_ind) const
|
||||||
|
{
|
||||||
|
const real perc_ind = indetraibile_al(codind, caus, annodoc);
|
||||||
|
const bool corrispettivo = caus.corrispettivi();
|
||||||
|
TBill billind; caus.bill(RIGA_IVA_NON_DETRAIBILE, billind);
|
||||||
|
const bool iva_ind_al_costo = !billind.ok();
|
||||||
|
return analizza_IVA(imptot, ivatot, perc_ind, corrispettivo, iva_ind_al_costo,
|
||||||
|
codiva, imp_det, iva_det, imp_ind, iva_ind);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggiusta i row types se sono andati persi o non sono stati convertiti
|
||||||
|
void TMovimentoPN::adjust_rowtypes()
|
||||||
|
{
|
||||||
|
const TRectype& mov = curr();
|
||||||
|
const char tipo = mov.get_char(MOV_TIPO);
|
||||||
|
const long codice = mov.get_long(MOV_CODCF);
|
||||||
|
const int annoiva = mov.get_int(MOV_ANNOIVA);
|
||||||
|
const int annodoc = mov.get_date(MOV_DATADOC).year();
|
||||||
|
const TCausale causale(mov.get(MOV_CODCAUS), annoiva);
|
||||||
|
|
||||||
|
TConti_array conti;
|
||||||
|
int r;
|
||||||
|
|
||||||
|
for (r = 0; r < _iva.rows(); r++)
|
||||||
|
{
|
||||||
|
const TRectype& row = iva(r);
|
||||||
|
const TBill bill(row);
|
||||||
|
const real imponibile(row.get(RMI_IMPONIBILE));
|
||||||
|
const real imposta(row.get(RMI_IMPOSTA));
|
||||||
|
const TString4 codiva = row.get(RMI_CODIVA);
|
||||||
|
const TString4 codind = row.get(RMI_TIPODET);
|
||||||
|
real imp_det, iva_det, imp_ind, iva_ind;
|
||||||
|
analizza_riga_IVA(imponibile, imposta, causale, annodoc, codiva, codind,
|
||||||
|
imp_det, iva_det, imp_ind, iva_ind);
|
||||||
|
|
||||||
|
conti.add(bill, imp_det + imp_ind);
|
||||||
|
conti.add_iva(false, iva_ind);
|
||||||
|
conti.add_iva(true, iva_det);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool totale = FALSE;
|
||||||
|
bool ritfis = mov.get_real(MOV_RITFIS).is_zero();
|
||||||
|
bool ritsoc = mov.get_real(MOV_RITSOC).is_zero();
|
||||||
|
bool ivadet = conti.importo_iva(true).is_zero();
|
||||||
|
bool ivanon = conti.importo_iva(FALSE).is_zero();
|
||||||
|
|
||||||
|
for (r = 0; r < _cg.rows(); r++)
|
||||||
|
{
|
||||||
|
TRectype& row = cg(r);
|
||||||
|
const char rt = row.get_char(RMV_ROWTYPE);
|
||||||
|
switch (rt)
|
||||||
|
{
|
||||||
|
case 'F': ritfis = true; break;
|
||||||
|
case 'S': ritsoc = true; break;
|
||||||
|
case 'T': totale = true; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
if (rt > ' ') continue;
|
||||||
|
|
||||||
|
if (!totale && row.get_char(RMV_TIPOC) == tipo && row.get_long(RMV_SOTTOCONTO) == codice)
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'T');
|
||||||
|
totale = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const real importo(row.get(RMV_IMPORTO));
|
||||||
|
const TBill bill(row);
|
||||||
|
|
||||||
|
if (!ritfis && importo == mov.get_real(MOV_RITFIS))
|
||||||
|
{
|
||||||
|
TBill conto_rit; causale.bill(RIGA_PAG_RITFIS, conto_rit);
|
||||||
|
if (!conto_rit.ok() || conto_rit == bill)
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'F');
|
||||||
|
ritfis = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ritsoc && importo == mov.get_real(MOV_RITSOC))
|
||||||
|
{
|
||||||
|
TBill conto_rit; causale.bill(RIGA_PAG_RITSOC, conto_rit);
|
||||||
|
if (!conto_rit.ok() || conto_rit == bill)
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'S');
|
||||||
|
ritsoc = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!conti.ok())
|
||||||
|
continue; // Ho esaurito i conti IVA
|
||||||
|
|
||||||
|
if (importo == conti.importo(bill))
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'I');
|
||||||
|
conti.remove(bill);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ivadet && importo == conti.importo_iva(true))
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'D');
|
||||||
|
conti.remove_iva(true);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ivanon && importo == conti.importo_iva(FALSE))
|
||||||
|
{
|
||||||
|
row.put(RMV_ROWTYPE, 'N');
|
||||||
|
conti.remove_iva(FALSE);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TMovimentoPN& TMovimentoPN::get_sum_imponibile_imposta(real& s_imponibili, real& s_imposte)
|
||||||
|
{
|
||||||
|
TRecord_array& iva = iva_rows();
|
||||||
|
s_imponibili = ZERO;
|
||||||
|
s_imposte = ZERO;
|
||||||
|
for (int i = iva.first_row(); i <= iva.rows(); ++i)
|
||||||
|
{
|
||||||
|
TRectype& r = iva[i];
|
||||||
|
s_imponibili += r.get_real("IMPONIBILE");
|
||||||
|
s_imposte += r.get_real("IMPOSTA");
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
@ -370,83 +370,6 @@ real TMovimento_contabile::imposta(const char * codiva) const
|
|||||||
return imposta;
|
return imposta;
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
// Aggiustamento movimenti rovinati o convertiti male
|
|
||||||
///////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class TConti_array : private TAssoc_array
|
|
||||||
{
|
|
||||||
public: // TObject
|
|
||||||
virtual bool ok() const { return items() != 0; }
|
|
||||||
|
|
||||||
public:
|
|
||||||
bool add(const TBill& conto, const real& importo);
|
|
||||||
real importo(const TBill& conto);
|
|
||||||
bool remove(const TBill& conto);
|
|
||||||
|
|
||||||
bool add_iva(bool det, const real& importo);
|
|
||||||
real importo_iva(bool det);
|
|
||||||
bool remove_iva(bool det);
|
|
||||||
|
|
||||||
TConti_array() {}
|
|
||||||
virtual ~TConti_array() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
bool TConti_array::add(const TBill& conto, const real& importo)
|
|
||||||
{
|
|
||||||
const char* key = conto.string();
|
|
||||||
real* imp = (real*)objptr(key);
|
|
||||||
|
|
||||||
if (imp == nullptr)
|
|
||||||
TAssoc_array::add(key, importo);
|
|
||||||
else
|
|
||||||
*imp += importo;
|
|
||||||
return imp != nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
real TConti_array::importo(const TBill& conto)
|
|
||||||
{
|
|
||||||
const char* key = conto.string();
|
|
||||||
const real* imp = (real*)objptr(key);
|
|
||||||
return imp ? *imp : ZERO;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TConti_array::remove(const TBill& conto)
|
|
||||||
{
|
|
||||||
const char* key = conto.string();
|
|
||||||
return TAssoc_array::remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TConti_array::add_iva(bool det, const real& importo)
|
|
||||||
{
|
|
||||||
real* imp = nullptr;
|
|
||||||
|
|
||||||
if (!importo.is_zero())
|
|
||||||
{
|
|
||||||
const char* const key = det ? "D" : "N";
|
|
||||||
|
|
||||||
imp = (real*)objptr(key);
|
|
||||||
if (imp == nullptr)
|
|
||||||
TAssoc_array::add(key, importo);
|
|
||||||
else
|
|
||||||
*imp += importo;
|
|
||||||
}
|
|
||||||
return imp != nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
real TConti_array::importo_iva(bool det)
|
|
||||||
{
|
|
||||||
const char* const key = det ? "D" : "N";
|
|
||||||
const real* imp = (real*)objptr(key);
|
|
||||||
return imp ? *imp : ZERO;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TConti_array::remove_iva(bool det)
|
|
||||||
{
|
|
||||||
const char* const key = det ? "D" : "N";
|
|
||||||
return TAssoc_array::remove(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Aggiusta i row types se sono andati persi o non sono stati convertiti
|
// Aggiusta i row types se sono andati persi o non sono stati convertiti
|
||||||
void TMovimento_contabile::adjust_rowtypes()
|
void TMovimento_contabile::adjust_rowtypes()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user