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; TAssoc_array _conais;
public: 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; } 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); } 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) if (codice && *codice)
{ {
const int err = read(codice); const int err = read(codice);
/*
#ifdef DBG if (err != NOERR)
if (err != NOERR)
switch (tipo) switch (tipo)
{ {
case RIGA_SPESEDOC : case RIGA_SPESEDOC :
@ -203,8 +202,6 @@ TSpesa_prest::TSpesa_prest(const char* codice, char tipo)
error_box("Spesa %s assente", codice); error_box("Spesa %s assente", codice);
break; break;
} }
#endif
*/
} }
} }

View File

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