Patch level : 12.0 900

Files correlati     : ve0.exe ve6.exe
Commento            :

Contollata la sottocategoria e il codice spesa coani in fatturazione bolle
This commit is contained in:
Alessandro Bonazzi 2019-11-15 16:59:50 +01:00
parent 192867cff1
commit 3cde95efb6
3 changed files with 59 additions and 53 deletions

View File

@ -563,7 +563,8 @@ class TConai : public TObject
TAssoc_array _conais;
public:
const TSpesa_prest& get_spesa(const TString& sottocat) { return (const TSpesa_prest &) _conais[sottocat]; }
bool exist_sottocat(const TString& sottocat) { return _conais.objptr(sottocat); }
const TSpesa_prest& get_spesa(const TString& sottocat) { return (const TSpesa_prest &)_conais[sottocat]; }
const bool find(const TString& cod_spesa) { return _conais.objptr(cod_spesa) != NULL; }
int get_lista_cod_spesa(TString_array & keys) { return _conais.get_keys(keys); }

View File

@ -182,9 +182,8 @@ TSpesa_prest::TSpesa_prest(const char* codice, char tipo)
if (codice && *codice)
{
const int err = read(codice);
/*
#ifdef DBG
if (err != NOERR)
if (err != NOERR)
switch (tipo)
{
case RIGA_SPESEDOC :
@ -203,8 +202,6 @@ TSpesa_prest::TSpesa_prest(const char* codice, char tipo)
error_box("Spesa %s assente", codice);
break;
}
#endif
*/
}
}

View File

@ -3120,62 +3120,70 @@ void TDocumento::update_conai()
if (cli_add_conai)
{
const TString4 cod_iva_cli = codesiva();
TConai conai;
TConai conai;
FOR_EACH_ASSOC_OBJECT(_conaiqta, o, key, item)
{
const TString cod_sottocat = key;
FOR_EACH_ASSOC_OBJECT(_conaiqta, o, key, item)
{
const TString8 cod_sottocat = key;
// Se l'ho già fatto skippo
if (conai_aggiornati.objptr(cod_sottocat) != NULL)
continue;
// Se l'ho già fatto skippo
if (conai_aggiornati.objptr(cod_sottocat) != NULL)
continue;
TSpesa_prest sp = conai.get_spesa(cod_sottocat);
// Aggiungo la spesa
const real perc_esenz = cfven.get_real(get_cf_esenz(cod_sottocat.left(2)));
const bool cli_esente = (esponi_esenti) && (perc_esenz >= CENTO);
const real qta_lorda = *((real *) item);
real qta = qta_lorda;
if (!cli_esente && !qta_lorda.is_zero() && !perc_esenz.is_zero())
{
qta = qta_lorda * (CENTO - perc_esenz) / CENTO;
qta.round(5);
}
if (conai.exist_sottocat(cod_sottocat))
{
TSpesa_prest sp = conai.get_spesa(cod_sottocat);
if (qta > ZERO)
{
const TString4 tipo = sp.tipo_riga();
TRiga_documento& riga = new_row(tipo);
// Aggiungo la spesa
const real perc_esenz = cfven.get_real(get_cf_esenz(cod_sottocat.left(2)));
const bool cli_esente = (esponi_esenti) && (perc_esenz >= CENTO);
const real qta_lorda = *((real *)item);
real qta = qta_lorda;
if (!cli_esente && !qta_lorda.is_zero() && !perc_esenz.is_zero())
{
qta = qta_lorda * (CENTO - perc_esenz) / CENTO;
qta.round(5);
}
riga.put(RDOC_CODART, sp.codice());
riga.generata();
riga.put(RDOC_GENTIPO, 'C');
static TString descrizione;
descrizione.cut(0) << sp.descrizione() << " (" << cod_sottocat << ")";
riga.put(RDOC_DESCR, descrizione);
riga.put(RDOC_QTA, qta);
if (qta > ZERO)
{
TString4 tipo = sp.tipo_riga();
// Mi salvo anche la sottocategoria in questione
riga.put(RDOC_TIPOCON, cod_sottocat);
if (tipo.blank())
tipo = "03";
TRiga_documento& riga = new_row(tipo);
const real cambio = get_real(DOC_CAMBIO);
const TString4 valuta = get(DOC_CODVAL);
real prezzo = cli_esente ? ZERO : sp.prezzo();
riga.put(RDOC_CODART, sp.codice());
riga.generata();
riga.put(RDOC_GENTIPO, 'C');
static TString descrizione;
descrizione.cut(0) << sp.descrizione() << " (" << cod_sottocat << ")";
riga.put(RDOC_DESCR, descrizione);
riga.put(RDOC_QTA, qta);
sppr_calc(sp, valuta, cambio, prezzo);
if (this->tipo().calcolo_lordo())
prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS);
riga.put(RDOC_PREZZO, prezzo);
riga.put(RDOC_UMQTA, sp.um());
if (cod_iva_cli.empty())
riga.put(RDOC_CODIVA, sp.cod_iva());
else
riga.put(RDOC_CODIVA, cod_iva_cli);
}
}
}
// Mi salvo anche la sottocategoria in questione
riga.put(RDOC_TIPOCON, cod_sottocat);
const real cambio = get_real(DOC_CAMBIO);
const TString4 valuta = get(DOC_CODVAL);
real prezzo = cli_esente ? ZERO : sp.prezzo();
sppr_calc(sp, valuta, cambio, prezzo);
if (this->tipo().calcolo_lordo())
prezzo = riga.iva().lordo(prezzo, ALL_DECIMALS);
riga.put(RDOC_PREZZO, prezzo);
riga.put(RDOC_UMQTA, sp.um());
if (cod_iva_cli.empty())
riga.put(RDOC_CODIVA, sp.cod_iva());
else
riga.put(RDOC_CODIVA, cod_iva_cli);
}
}
else
error_box("Sottocategoria CONAI %s assente", (const char *) cod_sottocat);
}
}
}
}