Patch level : 12.0 934

Files correlati     : tp0.exe
Commento            :

 - La segnalazione di sottocategoria assente non è più bloccante
This commit is contained in:
Alessandro Bonazzi 2020-01-30 15:47:20 +01:00
parent 19fd6a30f4
commit 8744bb7b7d
3 changed files with 53 additions and 22 deletions

View File

@ -65,6 +65,8 @@ public:
void log(const char* msg, int sev = 0) const;
bool log_error(const char* msg);
void log_message(const char* msg) { log(msg, 0); }
bool log_cancelled();
const TRecordset& recordset() const;
TRecordset& recordset();

View File

@ -830,7 +830,7 @@ bool TPack_ddt::trasferisci()
const TCONAI_class ct = conai_str2class(conai_subclass);
if (cache().get("&VECSS", conai_subclass).empty())
log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
ndoc, (const char *) (rowtype == "01" ? codart : custcode),
(const char *) conai_subclass));
if (conai_scheme == 1)
@ -851,7 +851,7 @@ bool TPack_ddt::trasferisci()
const TString& cs = art.conai_subclass(i - 1); // Codice sottocategoria su ANAMAG
if (cache().get("&VECSS", cs).empty())
log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
ndoc, (const char *)(rowtype == "01" ? codart : custcode),
(const char *)cs));
@ -880,7 +880,7 @@ bool TPack_ddt::trasferisci()
const real& weight = art.conai_weight(i - 1); // Peso imballo su ANAMAG
if (cache().get("&VECSS", cs).empty())
log_error(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
log_message(format(TR("Bolla %ld - Articolo %s - Sottocategoria %s assente"),
ndoc, (const char *)(rowtype == "01" ? codart : custcode),
(const char *)cs));

View File

@ -177,8 +177,6 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(const TDocumento& do
TGeneric_distrib agip(totale_qta_assogg, 5); //distrib per ridistribuire le % dei quantitativi assoggetati
if (doc.get_long(DOC_NDOC) == 28L)
int i = 1;
//ciclo di creazione del distrib con le quote conai
FOR_EACH_PHYSICAL_RDOC(doc, j, rdoc)
{
@ -329,13 +327,11 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi
const int nrighe = doc.rows();
//ciclo di riempimento delle righe csv;scandisce solo l'array con i valori compilati
for (int i = 1; i <= nrighe; i++)
{
const TRiga_documento& rdoc = doc[i];
FOR_EACH_PHYSICAL_RDOC(doc, i, rdoc)
{
for (int j = 1; j <= FR_CMAX; j++)
{
TString4 sottocat = rdoc.get(conai_sottocat_name(j));
TString4 sottocat = rdoc->get(conai_sottocat_name(j));
if (sottocat == sottoclass)
{
@ -349,14 +345,14 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi
//riempie i campi del record del csv
//codnum-anno-ndoc-datadoc-codcli-cofi-nriga-codagg1-sottocat-prezzo-um-conai(AB)-conai(B)-conai(A)
//parte chiave della riga
csv.set(0, rdoc.get(RDOC_CODNUM));
csv.set(1, TVariant(rdoc.get(RDOC_ANNO)));
csv.set(2, TVariant(rdoc.get(RDOC_NDOC)));
csv.set(0, rdoc->get(RDOC_CODNUM));
csv.set(1, TVariant(rdoc->get(RDOC_ANNO)));
csv.set(2, TVariant(rdoc->get(RDOC_NDOC)));
csv.set(3, TVariant(datadoc));
csv.set(4, TVariant(clifo.codice()));
csv.set(5, TVariant(clifo_paiv));
csv.set(6, TVariant(rdoc.get(RDOC_CODART)));
csv.set(7, TVariant(rdoc.get(RDOC_NRIGA)));
csv.set(6, TVariant(rdoc->get(RDOC_CODART)));
csv.set(7, TVariant(rdoc->get(RDOC_NRIGA)));
//codici conai
csv.set(8, TVariant(sottocat.left(2))); //codice materiale conai (es. carta, legno...)
@ -372,13 +368,15 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(const TDocumento& doc, TDichi
csv.set(11, TVariant(umqta));
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
real qta_tot_conai = rdoc.get_real(RDOC_QTA);
real qta_tot_conai = rdoc->get_real(RDOC_QTA);
qta_tot_conai *= rdoc->get_real(conai_peso_name(j));
if (is_nac)
qta_tot_conai = -qta_tot_conai;
csv.set(15, TVariant(qta_tot_conai));
//percentuale di esenzione conai al 100%?
const real rdoc_perc_conai = rdoc.get_real(conai_esenzione_name(conai_specie, LF_RIGHEDOC)); // ex QTAGG2
const real rdoc_perc_conai = rdoc->get_real(conai_esenzione_name(conai_specie, LF_RIGHEDOC)); // ex QTAGG2
//quantita' assoggettata (B) sul report (le NAC hanno segno rovesciato, ma avendolo gia' gia' rovesciato..
//..in precedenza non deve fare nulla!)
@ -448,17 +446,48 @@ bool TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione
const int nrighe = doc.rows();
int n_riga_generata = 0;
for (int j = 1; j <= nrighe; j++)
{
const TRiga_documento& rdoc = doc[j];
//c'è la riga generata con codart di tipo conai (sia automatica che manuale)?
if (rdoc.get(RDOC_CODART) == conai_codart && (rdoc.is_spese() || rdoc.is_generata()))
bool has_conai_row = false;
FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc)
{
if (rdoc->is_generata() && rdoc->get(RDOC_GENTIPO) == "C")
has_conai_row = true;
//c'è la riga generata con codart di tipo conai (sia automatica che manuale)?
if (rdoc->get(RDOC_CODART) == conai_codart && (rdoc->is_spese() || rdoc->is_generata()))
{
n_riga_generata = j;
break;
}
}
if (has_conai_row && n_riga_generata == 0)
{
char stato = doc.tipo().stati_iniziali_modifica()[0];
if (!isdigit(stato))
stato = '1';
doc.stato(stato);
{
FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc)
{
//c'è la riga generata con codart di tipo conai (sia automatica che manuale)?
if (rdoc->is_generata() && rdoc->get(RDOC_GENTIPO) == "C")
doc.destroy_row(j, true);
}
}
doc.update_conai();
{
FOR_EACH_PHYSICAL_RDOC_BACK(doc, j, rdoc)
{
//c'è la riga generata con codart di tipo conai (sia automatica che manuale)?
if (rdoc->get(RDOC_CODART) == conai_codart && (rdoc->is_spese() || rdoc->is_generata()))
{
n_riga_generata = j;
break;
}
}
}
}
if (n_riga_generata > 0)
scrivi_csv_doc_con_riga_generata(doc, n_riga_generata, csv, conai_specie, sottoclass, log);
else