Patch level : 10.0

Files correlati     : tp0
Ricompilazione Demo : [ ]
Commento            :
Nuova gestione CONAI per PACK


git-svn-id: svn://10.65.10.50/trunk@19332 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2009-09-24 15:28:12 +00:00
parent 348c0344ed
commit ab17e4d72f
4 changed files with 220 additions and 131 deletions

View File

@ -195,9 +195,23 @@ long TPack_transfer::odbc_exec(const char* cmd)
err = _outset->exec("BEGIN TRANS");
}
if (err >= 0)
{
err = _outset->exec(cmd);
if (err < 0)
log_error(TR("Errore di connessione al database"));
{
log("", 0); // Salto una riga
TParagraph_string msg(cmd, 100);
FOR_EACH_TOKEN(msg, str)
log(str, 0); // Riporto tutta la query
log_error(TR("ERRORE in esecuzione della query."));
}
}
else
{
TString msg;
msg << TR("ERRORE di connessione a ") << _outset->dsn() << " : BEGIN TRANS";
log_error(msg);
}
}
return err;
}

View File

@ -1,10 +1,10 @@
#include "tp0100.h"
#include <expr.h>
#include <recarray.h>
#include <tabutil.h>
#include "..\pr\agenti.h"
#include <clifo.h>
#include <cfven.h>
#include <comuni.h>
@ -18,44 +18,45 @@
class TCache_ban : public TCache_tp
{
TTable _ban;
protected:
virtual TObject* key2obj(const char* key);
public:
virtual const TString& decode(const TToken_string& tok);
TCache_ban(TPack_transfer* pt) : TCache_tp(pt) {}
TCache_ban(TPack_transfer* pt) : TCache_tp(pt), _ban("%BAN") {}
};
TObject* TCache_ban::key2obj(const char* key)
{
TTable ban("%BAN");
TToken_string code(key);
TString8 abi; code.get(0, abi);
TString8 cab; code.get(1, cab);
ban.put("CODTAB", abi);
if (ban.read() != NOERR)
_ban.put("CODTAB", abi);
if (_ban.read() != NOERR)
{
const TString& desc = get_str("BankName");
ban.put("CODTAB", abi);
ban.put("S0", desc);
test_write(ban);
_ban.put("CODTAB", abi);
_ban.put("S0", desc);
test_write(_ban);
}
TString16 str;
str << abi; str << cab;
ban.put("CODTAB", str);
if (ban.read() != NOERR)
_ban.put("CODTAB", str);
if (_ban.read() != NOERR)
{
const TString& desc = get_str("BankName");
ban.put("CODTAB", str);
ban.put("S0", desc);
test_write(ban);
_ban.put("CODTAB", str);
_ban.put("S0", desc);
test_write(_ban);
}
return ban.get("S0").dup();
return _ban.get("S0").dup();
}
const TString& TCache_ban::decode(const TToken_string& tok)
{
return *(const TString*) objptr(tok);
return *(const TString*)objptr(tok);
}
///////////////////////////////////////////////////////////

View File

@ -3,10 +3,51 @@
#include "../ve/velib.h"
#include "../mg/codcorr.h"
///////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
// Cache articoli
///////////////////////////////////////////////////////////
class TArticolo_pack : public TRectype
{
TString _cust_code, _paper_comp;
TString4 _conai_scat[CONAI_CLASSES];
real _conai_peso[CONAI_CLASSES];
public:
void set_customer_code(const TString& cc) { _cust_code = cc; }
const TString& customer_code() const { return _cust_code; }
void set_paper_composition(const TString& pc) { _paper_comp = pc; }
const TString& paper_composition() const { return _paper_comp; }
const TString& conai_subclass(TCONAI_class cc) const { CHECK_CONAI(cc); return _conai_scat[cc]; }
const real& conai_weight(TCONAI_class cc) const { CHECK_CONAI(cc); return _conai_peso[cc]; }
TArticolo_pack(const TRectype& anamag);
TArticolo_pack();
};
TArticolo_pack::TArticolo_pack(const TRectype& anamag) : TRectype(anamag)
{}
TArticolo_pack::TArticolo_pack() : TRectype(LF_ANAMAG)
{
FOR_EACH_CONFIGURED_CONAI_CLASS(cc)
{
const TFieldref anamag_sotcat(conai_sottocat_name(cc, LF_ANAMAG), LF_ANAMAG);
const TFieldref anamag_weight(conai_peso_name(cc, LF_ANAMAG), LF_ANAMAG);
const TString4 sotcat = anamag_sotcat.read(*this);
const real peso = anamag_weight.read(*this);
if (sotcat.full() && !peso.is_zero())
{
_conai_scat[cc] = sotcat;
_conai_peso[cc] = peso;
}
}
}
class TCache_art : public TCache_tp
{
TLocalisamfile _anamag;
@ -14,17 +55,17 @@ class TCache_art : public TCache_tp
protected:
virtual TObject* key2obj(const char* key);
virtual const TString& decode(const TToken_string& tok);
bool get_extra_info(const char* key, TString& pc, TString& cc) const;
bool get_extra_info(const char* key, TArticolo_pack& art) const;
public:
const TRectype& articolo();
const TArticolo_pack& articolo();
TCache_art(TPack_ddt* ddt) : TCache_tp(ddt), _anamag(LF_ANAMAG) {}
};
bool TCache_art::get_extra_info(const char* key, TString& pc, TString& cc) const
bool TCache_art::get_extra_info(const char* key, TArticolo_pack& art) const
{
TString qry(512);
qry << query_header();
qry = query_header();
qry << "SELECT Paper_Composition_Group.CompDesc, Mag_Existing_Article.ArticleCustCode\n"
<< "FROM Mag_Existing_Article, Articles_Composition, Paper_Composition_Group\n"
<< "WHERE (Mag_Existing_Article.ArtCode='" << key << "') AND "
@ -34,8 +75,10 @@ bool TCache_art::get_extra_info(const char* key, TString& pc, TString& cc) const
const bool ok = paperset.move_first();
if (ok)
{
pc = paperset.get(0u).as_string(); // Paper composition
cc = paperset.get(1).as_string(); // Customer code
const TString pc = paperset.get(0u).as_string(); // Paper composition
const TString cc = paperset.get(1).as_string(); // Customer code
art.set_customer_code(cc);
art.set_paper_composition(pc);
if (cc.full())
{
int righe = 0;
@ -59,13 +102,28 @@ bool TCache_art::get_extra_info(const char* key, TString& pc, TString& cc) const
}
}
}
qry = query_header();
qry << "SELECT ClassCode,Weight\n"
<< "FROM Mag_Existing_Article, Articles_environmentTax\n"
<< "WHERE (Mag_Existing_Article.ArtCode='" << key << "') AND "
<< "(Mag_Existing_Article.ArticleCode=Articles_environmentTax.ArticleCode)";
TODBC_recordset envtax(qry);
for (bool et = envtax.move_first(); et; et = envtax.move_next())
{
const TString& cc = envtax.get(0u).as_string();
const real wkg = envtax.get(1).as_real();
}
return ok;
}
TObject* TCache_art::key2obj(const char* key)
{
if (key && *key > ' ') // Non salvo i codici vuoti presenti nelle righe descrizione
{
// Non salvo i codici vuoti presenti nelle righe descrizione
if (key == NULL || *key <= ' ')
return new TArticolo_pack; // Articolo nullo
_anamag.put(ANAMAG_CODART, key);
if (_anamag.read() != NOERR)
{
@ -90,20 +148,13 @@ TObject* TCache_art::key2obj(const char* key)
test_write(_anamag);
}
// Non memorizzo permanentemente questi dati ma li rendo disponibili
TString paper_composition, customer_code;
if (get_extra_info(key, paper_composition, customer_code))
{
_anamag.put(ANAMAG_USER10, paper_composition);
_anamag.put(ANAMAG_USER9, customer_code);
}
}
else
_anamag.zero();
return _anamag.curr().dup();
TArticolo_pack* art = new TArticolo_pack(_anamag.curr());
get_extra_info(key, *art); // CustomerCode e PaperComposition
return art;
}
const TRectype& TCache_art::articolo()
const TArticolo_pack& TCache_art::articolo()
{
TString80 codart = get_str("ArtCode");
if (codart.empty()) // Se non ho un codice articolo lo creo in base al conto
@ -114,12 +165,12 @@ const TRectype& TCache_art::articolo()
codart << "*" << gruconto << '*' << sottoconto;
}
return *(const TRectype*)objptr(codart);
return *(const TArticolo_pack*)objptr(codart);
}
const TString& TCache_art::decode(const TToken_string& tok)
{
const TRectype& rec = *(const TRectype*)objptr(tok);
const TArticolo_pack& rec = *(const TArticolo_pack*)objptr(tok);
return rec.get(ANAMAG_CODART);
}
@ -129,12 +180,14 @@ const TString& TCache_art::decode(const TToken_string& tok)
class TCache_umart : public TCache_tp
{
TLocalisamfile _umart;
protected:
virtual TObject* key2obj(const char* key);
public:
const TString& decode(const TToken_string& key) { return *(const TString*)objptr(key); }
TCache_umart(TPack_transfer* pt) : TCache_tp(pt) {}
TCache_umart(TPack_transfer* pt) : TCache_tp(pt), _umart(LF_UMART) {}
};
TObject* TCache_umart::key2obj(const char* key)
@ -153,12 +206,11 @@ TObject* TCache_umart::key2obj(const char* key)
if (!found)
{
TLocalisamfile umart(LF_UMART);
umart.put(UMART_CODART, codart);
umart.put(UMART_NRIGA, i+1);
umart.put(UMART_UM, um);
umart.put(UMART_FC, 1);
test_write(umart);
_umart.put(UMART_CODART, codart);
_umart.put(UMART_NRIGA, i+1);
_umart.put(UMART_UM, um);
_umart.put(UMART_FC, 1);
test_write(_umart);
}
return code.dup();
@ -249,9 +301,9 @@ const TRectype& TPack_ddt::get_articolo(TString& um, real& qta, TString& custcod
{
if (_art == NULL)
_art = new TCache_art(this);
const TRectype& rec = _art->articolo();
const TArticolo_pack& rec = _art->articolo();
get_um_qta(um, qta);
custcode = rec.get(ANAMAG_USER9);
custcode = rec.customer_code();
if (!rec.empty() && um.full())
{
@ -318,11 +370,9 @@ bool TPack_ddt::get_clifo(char& tipocf, long& codcf)
if (codcf > 0 && (tipocf == 'C' || tipocf == 'F'))
{
const int err = _cli.read(tipocf, codcf);
if (err != NOERR)
{
TString msg; msg.format("Errore %d durante la lettura del %s %ld ", err, tipocf == 'C' ? "Cliente" : "Fornitore", codcf);
return log_error(msg);
}
return true;
@ -580,7 +630,7 @@ bool TPack_ddt::trasferisci()
TString4 um;
real qta;
TString custcode;
const TRectype& art = get_articolo(um, qta, custcode);
const TArticolo_pack& art = get_articolo(um, qta, custcode);
TString4 rowtype = "01"; // Riga merce
bool bIsMerce = true;
@ -645,31 +695,61 @@ bool TPack_ddt::trasferisci()
rdoc.put(RDOC_SCONTO, sconto);
rdoc.put(RDOC_PERCPROV, get_real_str("Provv"));
rdoc.put(RDOC_QTAGG1, get_real_str("WeightETUnit"));
rdoc.zero(RDOC_QTAGG2); // Azzera percentuale indetraibilita' CONAI
if (bIsSingleSheet)
rdoc.put(RDOC_QTAGG3, get_real_str("Quantity"));
rdoc.put("NUMFOGLI", get_real_str("Quantity")); // Ex QTAGG3
const TString& conai_class = get_str("ClassCode");
rdoc.put(RDOC_CODAGG1, conai_class);
rdoc.put(RDOC_CODAGG2, get_str("SubclassCode"));
rdoc.put("FAMILY", get_str("FamilyCode")); // Uso campo virtuale RG1:FAMILY
const TString& conai_cfv = config().get(conai_class, "CFV_CONAI");
if (conai_cfv.full())
{
TString8 tok;
tok.format("%c|%ld", doc->get_char(DOC_TIPOCF), doc->get_long(DOC_CODCF));
const TRectype& cfven = cache().get(LF_CFVEN, tok);
const real perc = cfven.get(conai_cfv);
rdoc.put(RDOC_QTAGG2, perc);
// Copia tutte le sottocategorie CONAI dall'anagrafica alla riga documento
real peso_imballo_anamag;
int pesi_anamag = 0;
FOR_EACH_CONAI_CLASS(cc)
{
const TString& cs = art.conai_subclass(cc); // Codice sottocategoria su ANAMAG
if (cs.full()) // la presenza della sottoclasse implica anche un peso positivo
{
const real& weight = art.conai_weight(cc); // Peso imballo su ANAMAG
rdoc.put(conai_sottocat_name(cc, LF_RIGHEDOC), cs);
rdoc.put(conai_peso_name(cc, LF_RIGHEDOC), weight); // ex QTAGG1
rdoc.put(conai_esenzione_name(cc, LF_RIGHEDOC),
cfven.get(conai_esenzione_name(cc, LF_CFVEN))); // ex QTAGG2
peso_imballo_anamag += weight;
pesi_anamag++;
}
}
// La sottocategoria della bolla prevale su quella anagrafica impostata sopra
const TString& conai_class = get_str("ClassCode");
const TCONAI_class ct = conai_str2class(conai_class);
const TString& conai_subclass = get_str("SubclassCode");
rdoc.put(conai_sottocat_name(ct, LF_RIGHEDOC), conai_subclass);
const real peso_imballo_ddt = get_real_str("WeightETUnit");
// Con imballi composti da vari materiali devo riproporzionare
if (pesi_anamag > 1 && peso_imballo_ddt != peso_imballo_anamag && !peso_imballo_ddt.is_zero())
{
TGeneric_distrib d(peso_imballo_ddt, 3);
FOR_EACH_CONFIGURED_CONAI_CLASS(cc)
d.add(art.conai_weight(cc));
FOR_EACH_CONFIGURED_CONAI_CLASS(cc)
rdoc.put(conai_peso_name(cc), d.get());
}
else
{
// Caso semplice della sola carta
rdoc.put(conai_peso_name(ct), peso_imballo_ddt);
}
rdoc.put("FAMILY", get_str("FamilyCode")); // Uso campo virtuale RG1:FAMILY
}
TString info;
if (_paper_info)
{
const TString& pap_comp = art.get(ANAMAG_USER10);
const TString& pap_comp = art.paper_composition();
if (pap_comp.full())
info << "\n" << pap_comp;
}
@ -710,7 +790,7 @@ bool TPack_ddt::trasferisci()
{
const TString& r_ref = get_str("RowCustReference"); // Leggo dalla riga
if (r_ref.full())
ref << '/' << r_ref << '/' << art.get(ANAMAG_USER9);
ref << '/' << r_ref << '/' << art.customer_code();
rdoc.put(RDOC_CODCMS, ref);
}
}

View File

@ -74,9 +74,8 @@ public:
};
TDichiarazione_CONAI_csv_recordset::TDichiarazione_CONAI_csv_recordset()
: TCSV_recordset("CSV(,)\n")
{
}
: TCSV_recordset("CSV(,)\n")
{}
///////////////////////////////////////////////////////////
@ -86,14 +85,14 @@ TDichiarazione_CONAI_csv_recordset::TDichiarazione_CONAI_csv_recordset()
class TDichiarazione_CONAI : public TSkeleton_application
{
protected:
real clifo_conai(const TCli_for& clifo, const int conai_specie, TString& paiv) const;
real clifo_conai(const TCli_for& clifo, const TCONAI_class conai_specie, TString& paiv) const;
void elabora(const TMask& mask) const;
void scrivi_csv(const TRectype& prima_riga, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const;
const TCONAI_class conai_specie, const TString& conai_codart) const;
void scrivi_csv_doc_con_riga_generata(TDocumento& doc, const int n_riga_generata,
TDichiarazione_CONAI_csv_recordset& csv, const int conai_specie) const;
TDichiarazione_CONAI_csv_recordset& csv, const TCONAI_class conai_specie) const;
void scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const;
const TCONAI_class conai_specie, const TString& conai_codart) const;
public:
virtual bool create();
@ -101,19 +100,13 @@ public:
};
real TDichiarazione_CONAI::clifo_conai(const TCli_for& clifo, const int conai_specie, TString& paiv) const
// Percentuale di esenzione CONAI di clifo
real TDichiarazione_CONAI::clifo_conai(const TCli_for& clifo, const TCONAI_class conai_specie, TString& paiv) const
{
const char* campi[6] = { CFV_ESACC, CFV_ESALL, CFV_ESCAR, CFV_ESPLA, CFV_ESLEG, CFV_ESVET };
const TRectype& cfven_rec = clifo.vendite();
real cfven_perc_conai = ZERO;
if (conai_specie >= 0 && conai_specie < 6)
cfven_perc_conai = cfven_rec.get_real(campi[conai_specie]);
//vecchio modo con piva che fa precedenza a cofi
/*paiv = clifo.get(CLI_PAIV);
if (paiv.empty())
paiv = clifo.get(CLI_COFI);*/
real cfven_perces_conai = ZERO;
if (conai_configured_class(conai_specie))
cfven_perces_conai = cfven_rec.get_real(conai_esenzione_name(conai_specie, LF_CFVEN));
//nuovo metodo con logica rovesciata (fino al prossimo cambio di idea!)
paiv = clifo.get(CLI_COFI);
@ -123,12 +116,13 @@ real TDichiarazione_CONAI::clifo_conai(const TCli_for& clifo, const int conai_sp
paiv << " (PI)";
}
return cfven_perc_conai;
return cfven_perces_conai;
}
//riempie recordset con le righe CONAI del documento che contiene una riga generata CONAI
void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, const int n_riga_generata, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie) const
void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, const int n_riga_generata,
TDichiarazione_CONAI_csv_recordset& csv,
const TCONAI_class conai_specie) const
{
//prende dalla riga i dati che gli servono per fare vari calcoli
const TRiga_documento& riga_generata = doc[n_riga_generata];
@ -176,7 +170,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
//servono SOLO le righe CONAI!!!!!
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 sottocat = rdoc.get(get_conai_sottocat_name(conai_specie));
TString4 sottocat = rdoc.get(conai_sottocat_name(conai_specie));
//puo' capitare che la sottocategoria sia stata troncata alla categoria
if (sottocat.len() == 2)
sottocat << "99";
@ -209,7 +203,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
csv.set(11, TVariant(umqta));
//quantita' totale conai (A + B) sul report (le NAC hanno segno rovesciato)
real qta_tot_conai = (real&)qta_AB_conai[i];
real qta_tot_conai = (const real&)qta_AB_conai[i];
if (is_nac)
qta_tot_conai = -qta_tot_conai;
csv.set(15, TVariant(qta_tot_conai));
@ -236,9 +230,9 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
csv.set(14, TVariant(totale_contrib_conai));
//percentuale di esenzione conai in qtagg2
const real rdoc_perc_conai = rdoc.get_real(RDOC_QTAGG2);
csv.set(16, TVariant(rdoc_perc_conai));
//percentuale di esenzione conai
const TVariant rdoc_perc_conai = rdoc.get_real(conai_esenzione_name(conai_specie, LF_RIGHEDOC));
csv.set(16, rdoc_perc_conai);
//percentuale di esenzione conai in cfven
csv.set(17, TVariant(cfven_perc_conai));
@ -248,7 +242,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_con_riga_generata(TDocumento& doc, con
//riempie recordset con le righe CONAI del documento che NON ha una riga generata CONAI;trattasi di documenti..
//..farlocchi costruiti ad arte per correggere le vaccate dei rompiscatolifici
void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const
const TCONAI_class conai_specie, const TString& conai_codart) const
{
//scopre se il doc e' una NAC
const bool is_nac = doc.is_nota_credito();
@ -270,7 +264,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
const TRiga_documento& rdoc = doc[i];
//se non e' stata definita la sottocategoria conai (maiali!!) va messa uguale a quella generica
TString4 sottocat = rdoc.get(get_conai_sottocat_name(conai_specie));
TString4 sottocat = rdoc.get(conai_sottocat_name(conai_specie));
//puo' capitare che la sottocategoria sia stata troncata alla categoria
if (sottocat.len() == 2)
sottocat << "99";
@ -309,13 +303,13 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
csv.set(15, TVariant(qta_tot_conai));
//percentuale di esenzione conai al 100%?
const real rdoc_perc_conai = rdoc.get_real(RDOC_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!)
real qta_assoggettata_conai = qta_tot_conai;
if (rdoc_perc_conai == CENTO)
if (rdoc_perc_conai >= CENTO) // Guy: Mi pare strano gestire solo il caso 100%
qta_assoggettata_conai = ZERO;
csv.set(13, TVariant(qta_assoggettata_conai));
@ -328,7 +322,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
const real totale_contrib_conai = qta_assoggettata_conai * prezzo;
csv.set(14, TVariant(totale_contrib_conai));
//percentuale di esenzione conai in qtagg2
//percentuale di esenzione conai
csv.set(16, TVariant(rdoc_perc_conai));
//percentuale di esenzione conai in cfven
@ -340,7 +334,7 @@ void TDichiarazione_CONAI::scrivi_csv_doc_speciale(TDocumento& doc, TDichiarazio
//crea il documento che contiene la riga che gli viene passata,cerca la riga generata ed in base al risultato della ricerca chiama..
//..il metodo adatto
void TDichiarazione_CONAI::scrivi_csv(const TRectype& prima_riga, TDichiarazione_CONAI_csv_recordset& csv,
const int conai_specie, const TString& conai_codart) const
const TCONAI_class conai_specie, const TString& conai_codart) const
{
//crea la testata delle righedoc per poter fare vari calcoli (e intanto il tempo se ne va...)
const int anno = prima_riga.get_int(RDOC_ANNO);
@ -479,35 +473,35 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
}
//Adesso tocca al codice articolo in base alla specie CONAI
const int conai_specie = mask.get_int(F_SPECIECONAI);
const TCONAI_class conai_specie = (TCONAI_class)mask.get_int(F_SPECIECONAI);
TConfig ditta_ini(CONFIG_DITTA, "ve");
TVariant codart;
TString nome_report; //report di tipo 6.1 scelto in base alla specie conai
const char* nome_report = ""; //report di tipo 6.1 scelto in base alla specie conai
switch (conai_specie)
{
case 0:
case CONAI_ACC:
codart = ditta_ini.get("CODACC"); //acciaio
nome_report = "tp0900ac.rep";
break;
case 1:
case CONAI_ALL:
codart = ditta_ini.get("CODALL"); //alluminio
nome_report = "tp0900al.rep";
break;
case 2:
case CONAI_CAR:
codart = ditta_ini.get("CODCAR"); //carta
nome_report = "tp0900ca.rep";
break;
case 3:
case CONAI_PLA:
codart = ditta_ini.get("CODPLA"); //plastica
nome_report = "tp0900pl.rep";
break;
case 4:
case CONAI_LEG:
codart = ditta_ini.get("CODLEG"); //legno
nome_report = "tp0900le.rep";
break;
case 5:
case CONAI_VET:
codart = ditta_ini.get("CODVET"); //vetro
nome_report = "tp0900ve.rep";
break;
@ -543,7 +537,7 @@ void TDichiarazione_CONAI::elabora(const TMask& mask) const
//cerca le righe con numerazione e tipo indicate nello sheet;prende sia le righe che generano CONAI (per avere il codice conai,..
//..le quantita' etc) e le righe generate da CONAI (per avere i prezzi)
TString query;
TString scat_fieldname(get_conai_sottocat_name(conai_specie));
TString scat_fieldname(conai_sottocat_name(conai_specie));
if (scat_fieldname.blank())
return;