From 57662b88e66a4b953f49b3caba674749ad086e1e Mon Sep 17 00:00:00 2001 From: bonazzi Date: Wed, 26 Jul 2017 06:57:17 +0000 Subject: [PATCH] Patch level : 12.0 426 Files correlati : db0.exe db0500a.msk db0500b.msk db1.exe db1100a.msk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Attivata la descrizione della distinta in immissione Copiato l’articolo nel codice distinta in ricerca Impostata l’unità di misura nella pagina disponibilità dell’esplosione Stampate la descrizione di distinta a e di riga nell’ esplosione git-svn-id: svn://10.65.10.50/branches/R_10_00@24001 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/db/db0500.cpp | 26 +++++++++++++------- src/db/db0500a.uml | 1 + src/db/db0500b.uml | 4 +-- src/db/db1100.cpp | 61 +++++++++++++++++++++++++++++++--------------- src/db/db1100a.uml | 3 +++ src/db/dblib.cpp | 48 +++++++++++++++++++++++++++--------- 6 files changed, 102 insertions(+), 41 deletions(-) diff --git a/src/db/db0500.cpp b/src/db/db0500.cpp index 500ab9488..6104e7033 100755 --- a/src/db/db0500.cpp +++ b/src/db/db0500.cpp @@ -241,7 +241,7 @@ protected: void load_memo(TMask& m, TToken_string& memo); - void remove_desc(const TMask& m); + void remove_desc(TMask& m); public: TRelation& relation() { return *_therel; } @@ -1413,9 +1413,11 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol case 'A': { set(F_TIPO, "A", true); - - const TArticolo mag(code); - set(F_DESCR, mag.get(ANAMAG_DESCR)); + + const TArticolo mag(code); + + if (get(F_DESCR).blank()) + set(F_DESCR, mag.get(ANAMAG_DESCR)); set(F_PREZZO, mag.get(ANAMAG_COSTSTD)); set(F_PESO, mag.get(ANAMAG_PESO)); set(F_UMP, mag.get(ANAMAG_UMP)); @@ -1426,7 +1428,9 @@ bool TDistinta_mask::on_field_event(TOperable_field& o, TField_event e, long jol set(F_TIPO, "L", true); const TLavorazione lav(code); - set(F_DESCR, lav.descr()); + + if (get(F_DESCR).blank()) + set(F_DESCR, lav.descr()); set(F_UM, lav.um()); set(F_PREZZO, lav.prezzo()); } @@ -1859,9 +1863,14 @@ bool TDistinta_app::parms2rel(const TMask& m) return true; } -void TDistinta_app::remove_desc(const TMask& m) +void TDistinta_app::remove_desc(TMask& m) { TSheet_field& sf = m.sfield(F_SHEET); + TString descr = cache().get(LF_ANAMAG, m.get(F_CODICE), ANAMAG_DESCR); + TString distdescr = m.get(F_DESCR); + + if (descr == distdescr) + m.reset(F_DESCR); FOR_EACH_SHEET_ROW(sf, r, row) { @@ -1870,7 +1879,6 @@ void TDistinta_app::remove_desc(const TMask& m) row->add(s, sf.cid2index(F_EXPR)); const char type = row->get(sf.cid2index(F_TIPOCOMP))[0]; const TString cod = row->get(sf.cid2index(F_CODART)); - TString descr; switch (type) { @@ -1897,7 +1905,7 @@ void TDistinta_app::remove_desc(const TMask& m) int TDistinta_app::write(const TMask& m) { parms2rel(m); - remove_desc(m); + remove_desc((TMask&)m); int err = TRelation_application::write(m); if (err == NOERR && get_relation()->lfile().get_bool("VIRTUALE")) { @@ -1911,7 +1919,7 @@ int TDistinta_app::write(const TMask& m) int TDistinta_app::rewrite(const TMask& m) { parms2rel(m); - remove_desc(m); + remove_desc((TMask&)m); int err = TRelation_application::rewrite(m); if (err == NOERR && get_relation()->lfile().get_bool("VIRTUALE")) { diff --git a/src/db/db0500a.uml b/src/db/db0500a.uml index 246f00513..a6b4ffd11 100755 --- a/src/db/db0500a.uml +++ b/src/db/db0500a.uml @@ -90,6 +90,7 @@ BEGIN OUTPUT F_CODICE CODART CHECKTYPE REQUIRED ADD RUN ve2 -3 + MESSAGE COPY,F_CODICE FLAGS "U" DEFAULT NONE END diff --git a/src/db/db0500b.uml b/src/db/db0500b.uml index cbf97b50c..093d820b2 100755 --- a/src/db/db0500b.uml +++ b/src/db/db0500b.uml @@ -44,8 +44,8 @@ STRING F_DESCR 50 BEGIN PROMPT 2 2 "Descrizione " FIELD DESCR - GROUP 1 - FLAGS "D" +// GROUP 1 +// FLAGS "D" END ZOOM F_NOTE 50 diff --git a/src/db/db1100.cpp b/src/db/db1100.cpp index dd574bd55..31cf11395 100755 --- a/src/db/db1100.cpp +++ b/src/db/db1100.cpp @@ -860,21 +860,42 @@ bool TExplode_distinta_form::validate(TForm_item &f, TToken_string &t) else if (code == "_DES") { - switch (tipo) - { - case 'L': - { - const TLavorazione lav(re.articolo()); - valore = lav.descr(); - } - break; - case 'V': - valore = cache().get(LF_DIST, re.articolo(), "DESCR"); - break; - default: - valore = cache().get(LF_ANAMAG, re.articolo(), ANAMAG_DESCR); - break; - } + + TToken_string fa(re.path(), '~'); + TToken_string key(fa.get(0)); + TToken_string tmp("", '~'); + TString code; + + TToken_string & p = (TToken_string &) re.path(); + p.get(-2, (TString &)tmp); + tmp.get(2, code); + + if (code == "0") + valore = cache().get(LF_DIST, key, DIST_DESCR); + else + { + key.add(code); // ?????? + valore = cache().get(LF_RDIST, key, RDIST_DESCR); + } + + if (valore.blank()) + { + switch (tipo) + { + case 'L': + { + const TLavorazione lav(re.articolo()); + valore = lav.descr(); + } + break; + case 'V': + valore = cache().get(LF_DIST, re.articolo(), "DESCR"); + break; + default: + valore = cache().get(LF_ANAMAG, re.articolo(), ANAMAG_DESCR); + break; + } + } if (livelli_giacenza().enabled()) { TString lv = re.giacenza(); @@ -1666,10 +1687,12 @@ void TEsplosione_distinta_app::compile_list() c.setregion(from,to); const bool null_sel = _parameters._from_num.empty() || _parameters._to_num.empty(); const long items = null_sel ? 0L : c.items(); + TSheet_field& sa = (TSheet_field&) _mask->field(F_SHEETART); + int righe = sa.items(); - if (items > 0) + if (items+righe > 0) { - TProgind p(items,TR("Estrazione distinte da esplodere da documenti...")); + TProgind p(items+righe,TR("Estrazione distinte da esplodere da documenti...")); c.freeze(); for (c = 0L; c.pos() < items; ++c) { @@ -1741,8 +1764,8 @@ void TEsplosione_distinta_app::compile_list() // Aggiunge le righe dallo spreadsheet - TSheet_field& sa = _mask->sfield(F_SHEETART); - const int righe = sa.items(); + // sa = _mask->sfield(F_SHEETART); + // righe = sa.items(); if (righe > 0) { TProgind p(righe,TR("Estrazione distinte da esplodere...")); diff --git a/src/db/db1100a.uml b/src/db/db1100a.uml index 87d25100b..4fdf23e26 100755 --- a/src/db/db1100a.uml +++ b/src/db/db1100a.uml @@ -565,11 +565,14 @@ STRING F_CODDIS 20 BEGIN PROMPT 2 2 "Codice " USE LF_DIST SELECT VIRTUALE!="X" + JOIN LF_UMART INTO CODART==CODDIST NRIGA==1 INPUT CODDIST F_CODDIS DISPLAY "Codice@20" CODDIST DISPLAY "Desrizione@50" DESCR + DISPLAY "Unità di misura" UM OUTPUT F_CODDIS CODDIST OUTPUT F_DESCR DESCR + OUTPUT F_UMEXPR UM CHECKTYPE NORMAL MESSAGE EMPTY CLEAR,F_LIV1|CLEAR,F_LIV2|CLEAR,F_LIV3|CLEAR,F_LIV4 MESSAGE ENABLE, F_LIV1 diff --git a/src/db/dblib.cpp b/src/db/dblib.cpp index 73aec373e..e6711fae4 100755 --- a/src/db/dblib.cpp +++ b/src/db/dblib.cpp @@ -13,6 +13,7 @@ #include "../mg/umart.h" #include "../mg/rmovmag.h" #include "../include/rdoc.h" +#include "dist.h" #include "rdist.h" /////////////////////////////////////////////////////////// @@ -764,8 +765,17 @@ bool TDistinta_tree::describe(const TCodice_articolo& codart, TString& descr) co father_code(code); key.add(code); - key.add(curr_comp(code)); - descr = cache().get(LF_RDIST, key, RDIST_DESCR); + + const int ccomp = curr_comp(code); + + if (ccomp == 0) + descr = cache().get(LF_DIST, codart, DIST_DESCR); + else + { + key.add(ccomp); + descr = cache().get(LF_RDIST, key, RDIST_DESCR); + } + if (descr.not_empty()) return TRUE; descr = cache().get(LF_ANAMAG, codart, ANAMAG_DESCR); @@ -1704,12 +1714,12 @@ int TDistinta_tree::raggruppa(TArray& boom, TExplosion_grouping mode) const { for (int i = 0; i < boom.items(); i++) { - TRiga_esplosione& qta1 = (TRiga_esplosione&)boom[i]; + TRiga_esplosione& row1 = (TRiga_esplosione&)boom[i]; if (mode == RAGGR_EXP_UMBASE || mode == RAGGR_EXP_BASE) - qta1.convert2umbase(); else + row1.convert2umbase(); else if (mode == RAGGR_EXP_UMDIST || mode == RAGGR_EXP_DIST) - qta1.convert2umdist(); + row1.convert2umdist(); if (mode == RAGGR_EXP_UMBASE || mode == RAGGR_EXP_UMDIST || @@ -1717,18 +1727,34 @@ int TDistinta_tree::raggruppa(TArray& boom, TExplosion_grouping mode) const { for (int j = boom.items()-1; j > i; j--) { - TRiga_esplosione& qta2 = (TRiga_esplosione&)boom[j]; - if (qta1.articolo() != qta2.articolo()) + TRiga_esplosione& row2 = (TRiga_esplosione&)boom[j]; + if (row1.articolo() != row2.articolo()) continue; - if (mode == RAGGR_EXP_EACHUM && qta1.um() != qta2.um()) + if (mode == RAGGR_EXP_EACHUM && row1.um() != row2.um()) continue; - qta1 += qta2; - boom.destroy(j, TRUE); + row1 += row2; + boom.destroy(j, true); } } - } + } +/* if (mode == RAGGR_EXP_UMBASE || + mode == RAGGR_EXP_UMDIST || + mode == RAGGR_EXP_EACHUM) + { + for (int i = 0; i < boom.items(); i++) + { + TRiga_esplosione& row = (TRiga_esplosione&)boom[i]; + + if (row.path().find("00.73.00.0030") > 0) + int i = 1; + if (row.path().find("00.73.00.0028") > 0) + int i = 1; + if (row.curr_qta() == ZERO) + boom.destroy(i,true); + } + } */ return boom.items(); }