Patch level : 12.0 624

Files correlati     :
Commento            : tp0.exe

Sistemato calcolo peso per categorie conai inserite in bolla per DANIA Bisogna definire una variabile  ConaiScheme = 1 nel paragrfo tp del file ditta.ini
This commit is contained in:
AlexBonazzi 2018-09-24 01:18:21 +02:00
parent 77cad74ae9
commit 3ee3309550
3 changed files with 76 additions and 44 deletions

View File

@ -481,6 +481,7 @@ void TTrasferimentoPack_mask::trasferisci()
pc.set_custrif(get(F_RIF));
pc.set_ordrif(get(F_ORD));
pc.activate_order_date(get_bool(F_ORDDATE));
pc.activate_conai(ini_get_int(CONFIG_DITTA, "tp", "ConaiScheme", 0));
pc.init(TR("Documenti di trasporto"), query_header, log);
go_on = pc.trasferisci();
book.add(log);

View File

@ -212,6 +212,7 @@ class TPack_ddt : public TPack_transfer
TString _rif, _ord;
TDate _data_limite;
TAssoc_array _iva; // Codici IVA PACK
int _conai;
TCli_for _cli;
protected:
@ -228,7 +229,8 @@ protected:
const TString& get_iban(const TRectype& clifo) const;
const TString & custrif() { return _rif; }
const TString & ordrif() { return _ord; }
bool order_date() { return _order_date; }
bool order_date() { return _order_date; }
int get_conai() { return _conai; }
bool save_doc(TDocumento* &doc, const int doc_code);
@ -246,8 +248,9 @@ public:
void activate_extended_discount(bool on) { _extended_discount = on; }
void set_custrif(const char * s) { _rif = s && *s ? s : "Vs. rifer.: "; }
void set_ordrif(const char * s) { _ord = s && *s ? s : "Ns. Ordine nr. "; }
void activate_order_date(bool on) { _order_date = on; }
void activate_order_date(bool on) { _order_date = on; }
void activate_conai(int conai) { _conai = conai; }
TPack_ddt();
~TPack_ddt();
};

View File

@ -19,8 +19,10 @@ bool TArticolo_pack::set_conai(TCONAI_class cc, const TString& scat, const real&
TArticolo_pack::TArticolo_pack(const TRectype& anamag) : TRectype(anamag)
{
FOR_EACH_CONFIGURED_CONAI_CLASS(cc)
{
FOR_EACH_CONFIGURED_CONAI_CLASS(cc)
set_conai(cc, EMPTY_STRING, ZERO);
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);
@ -675,14 +677,6 @@ bool TPack_ddt::trasferisci()
doc->put(DOC_ADDBOLLI, cfven.get(CFV_ADDBOLLI));
doc->put(DOC_PERCSPINC, cfven.get(CFV_PERCSPINC));
/* Old style
const TRectype& clifo = cache().get(LF_CLIFO, tok);
doc->put(DOC_CODABIA, clifo.get(CLI_CODABI));
doc->put(DOC_CODCABA, clifo.get(CLI_CODCAB));
doc->put(DOC_IBAN, get_iban(clifo));
*/
// New style 18-01-2012
tok.cut(0);
tok.add(tipocf); tok.add(codcf);
tok.add("V"); tok.add(1);
@ -818,31 +812,71 @@ bool TPack_ddt::trasferisci()
const TRectype& cfven = cache().get(LF_CFVEN, tok);
// Copia tutte le sottocategorie CONAI dall'anagrafica alla riga documento
real peso_imballo_anamag;
int pesi_anamag = 0;
FOR_EACH_CONFIGURED_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 TString4 conai_subclass = get_str("SubclassCode");
const TCONAI_class ct = conai_str2class(conai_subclass);
if (conai_subclass.len() == 4)
rdoc.put(conai_sottocat_name(ct, LF_RIGHEDOC), conai_subclass);
real peso_imballo_anamag;
real peso_imballo_ddt;
int pesi_anamag = 0;
const int conai_scheme = get_conai();
const TString4 conai_subclass = get_str("SubclassCode");
const TCONAI_class ct = conai_str2class(conai_subclass);
if (conai_scheme == 1)
{
// La sottocategoria della bolla prevale su quella anagrafica
if (conai_subclass.len() == 4)
{
rdoc.put(conai_sottocat_name(ct, LF_RIGHEDOC), conai_subclass);
peso_imballo_ddt = real(get_real_str("WeightETUnit"));
if (peso_imballo_ddt.is_zero())
peso_imballo_ddt = peso_imballo_anamag;
}
if (conai_subclass.blank())
{
FOR_EACH_CONFIGURED_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++;
}
}
}
}
else
{
FOR_EACH_CONFIGURED_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
if (conai_subclass.len() == 4)
{
rdoc.put(conai_sottocat_name(ct, LF_RIGHEDOC), conai_subclass);
peso_imballo_ddt = real(get_real_str("WeightETUnit"));
if (peso_imballo_ddt.is_zero())
peso_imballo_ddt = peso_imballo_anamag;
}
}
real peso_imballo_ddt = get_real_str("WeightETUnit");
if (peso_imballo_ddt.is_zero())
peso_imballo_ddt = peso_imballo_anamag;
// if (pesi_anamag > 1) // Con imballi composti da vari materiali devo riportare o riproporzionare
// {
@ -866,13 +900,7 @@ bool TPack_ddt::trasferisci()
if (rdoc.get(conai_sottocat_name(cc, LF_RIGHEDOC)).full())
rdoc.put(conai_peso_name(cc), art.conai_weight(cc));
}
/* }
else
{
// Caso semplice della sola carta
rdoc.put(conai_peso_name(CONAI_CARTA), peso_imballo_ddt);
} */
rdoc.put("FAMILY", get_str("FamilyCode")); // Uso campo virtuale RG1:FAMILY
}