From 3ee3309550a59d49d95025f89fe71028a38cdfc6 Mon Sep 17 00:00:00 2001 From: AlexBonazzi Date: Mon, 24 Sep 2018 01:18:21 +0200 Subject: [PATCH] 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 --- src/tp/tp0100.cpp | 1 + src/tp/tp0100.h | 9 ++-- src/tp/tp0102.cpp | 110 +++++++++++++++++++++++++++++----------------- 3 files changed, 76 insertions(+), 44 deletions(-) diff --git a/src/tp/tp0100.cpp b/src/tp/tp0100.cpp index 700fc0762..65b7ddafa 100755 --- a/src/tp/tp0100.cpp +++ b/src/tp/tp0100.cpp @@ -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); diff --git a/src/tp/tp0100.h b/src/tp/tp0100.h index 7a963b81c..44524550e 100755 --- a/src/tp/tp0100.h +++ b/src/tp/tp0100.h @@ -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(); }; diff --git a/src/tp/tp0102.cpp b/src/tp/tp0102.cpp index f191bd1fb..fab45b75b 100755 --- a/src/tp/tp0102.cpp +++ b/src/tp/tp0102.cpp @@ -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 }