From 858ae87f121d48e7fbb2c1bda5995d647a0ab38a Mon Sep 17 00:00:00 2001 From: guy Date: Wed, 14 May 2014 08:25:42 +0000 Subject: [PATCH] Nuove implementazioni git-svn-id: svn://10.65.10.50/branches/R_10_00@22934 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ci/ci0300a.h | 13 ++++ ci/ci0300a.uml | 175 ++++++++++++++++++++++++++++++++++++++++++++++++- ci/ci1200.cpp | 2 - ci/ci1350.cpp | 3 +- ci/ci2400.cpp | 82 ++++++++++++++++++----- ci/cimenu.men | 8 +++ 6 files changed, 258 insertions(+), 25 deletions(-) diff --git a/ci/ci0300a.h b/ci/ci0300a.h index 7c4d2bf07..23ee0fc2e 100755 --- a/ci/ci0300a.h +++ b/ci/ci0300a.h @@ -26,6 +26,19 @@ #define F_CODIVANI 169 #define F_DESIVANI 170 +#define F_CODARTLC 181 +#define F_DESARTLC 182 +#define F_CODARTGC 183 +#define F_DESARTGC 184 +#define F_CODARTAC 185 +#define F_DESARTAC 186 +#define F_CODARTLF 187 +#define F_DESARTLF 188 +#define F_CODARTGF 189 +#define F_DESARTGF 190 +#define F_CODARTAF 191 +#define F_DESARTAF 192 + #define FR_FILTRO 101 #define FR_DES 102 #define FR_INS 103 diff --git a/ci/ci0300a.uml b/ci/ci0300a.uml index 9a183c4f1..4e7c71601 100755 --- a/ci/ci0300a.uml +++ b/ci/ci0300a.uml @@ -132,13 +132,20 @@ STRING F_CODARTPR 20 BEGIN PROMPT 2 8 "Articolo " FIELD CODARTPR - USE LF_ANAMAG + USE LF_ANAMAG /*SELECT (SOTTOCV!=0)&&(SOTTOCA!=0)*/ INPUT CODART F_CODARTPR DISPLAY "Codice@20" CODART DISPLAY "Descrizione@50" DESCR + DISPLAY "Grp.V." GRUPPOV + DISPLAY "Con.V." CONTOV + DISPLAY "Sot.V." SOTTOCV + DISPLAY "Grp.A." GRUPPOA + DISPLAY "Con.A." CONTOA + DISPLAY "Sot.A." SOTTOCA OUTPUT F_CODARTPR CODART OUTPUT F_DESARTPR DESCR CHECKTYPE NORMAL + ADD RUN ve2 -3 FLAG "U" END @@ -146,12 +153,17 @@ STRING F_DESARTPR 50 30 BEGIN PROMPT 45 8 "" USE LF_ANAMAG KEY 2 - INPUT DESCR F_DESARTPR + INPUT DESCR F_DESARTPR /*SELECT (SOTTOCV!=0)&&(SOTTOCA!=0)*/ DISPLAY "Descrizione@50" DESCR DISPLAY "Codice@20" CODART + DISPLAY "Grp.V." GRUPPOV + DISPLAY "Con.V." CONTOV + DISPLAY "Sot.V." SOTTOCV + DISPLAY "Grp.A." GRUPPOA + DISPLAY "Con.A." CONTOA + DISPLAY "Sot.A." SOTTOCA COPY OUTPUT F_CODARTPR CHECKTYPE NORMAL - FLAG "U" END GROUPBOX DLG_NULL 78 5 @@ -325,6 +337,163 @@ END ENDPAGE +PAGE "Certificati" 0 2 0 0 + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 1 "Pagamenti clienti" +END + +STRING F_CODARTLC 20 +BEGIN + PROMPT 2 2 "Lavori " + COPY USE F_CODARTPR + INPUT CODART F_CODARTLC + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTLC CODART + OUTPUT F_DESARTLC DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FLAG "U" + FIELD CODARTLC +END + +STRING F_DESARTLC 50 30 +BEGIN + PROMPT 45 2 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTLC + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTLC + CHECKTYPE NORMAL +END + +STRING F_CODARTGC 20 +BEGIN + PROMPT 2 3 "Garanzia " + COPY USE F_CODARTPR + INPUT CODART F_CODARTGC + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTGC CODART + OUTPUT F_DESARTGC DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FIELD CODARTGC +END + +STRING F_DESARTGC 50 30 +BEGIN + PROMPT 45 3 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTGC + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTGC + CHECKTYPE NORMAL +END + +STRING F_CODARTAC 20 +BEGIN + PROMPT 2 4 "Anticipi " + COPY USE F_CODARTPR + INPUT CODART F_CODARTAC + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTAC CODART + OUTPUT F_DESARTAC DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FLAG "U" + FIELD CODARTAC +END + +STRING F_DESARTAC 50 30 +BEGIN + PROMPT 45 4 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTAC + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTAC + CHECKTYPE NORMAL +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 7 "Pagamenti fornitori" +END + +STRING F_CODARTLF 20 +BEGIN + PROMPT 2 8 "Lavori " + COPY USE F_CODARTPR + INPUT CODART F_CODARTLF + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTLF CODART + OUTPUT F_DESARTLF DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FLAG "U" + FIELD CODARTLF +END + +STRING F_DESARTLF 50 30 +BEGIN + PROMPT 45 8 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTLF + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTLF + CHECKTYPE NORMAL +END + +STRING F_CODARTGF 20 +BEGIN + PROMPT 2 9 "Garanzia " + COPY USE F_CODARTPR + INPUT CODART F_CODARTGF + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTGF CODART + OUTPUT F_DESARTGF DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FLAG "U" + FIELD CODARTGF +END + +STRING F_DESARTGF 50 30 +BEGIN + PROMPT 45 9 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTGF + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTGF + CHECKTYPE NORMAL +END + +STRING F_CODARTAF 20 +BEGIN + PROMPT 2 10 "Anticipi " + COPY USE F_CODARTPR + INPUT CODART F_CODARTAF + COPY DISPLAY F_CODARTPR + OUTPUT F_CODARTAF CODART + OUTPUT F_DESARTAF DESCR + CHECKTYPE NORMAL + ADD RUN ve2 -3 + FLAG "U" + FIELD CODARTAF +END + +STRING F_DESARTAF 50 30 +BEGIN + PROMPT 45 10 "" + COPY USE F_DESARTPR + INPUT DESCR F_DESARTAF + COPY DISPLAY F_DESARTPR + COPY OUTPUT F_CODARTAF + CHECKTYPE NORMAL +END + +ENDPAGE + ENDMASK PAGE "Tipologia Documento" -1 -1 78 13 diff --git a/ci/ci1200.cpp b/ci/ci1200.cpp index 776d2f693..2d11e68ac 100755 --- a/ci/ci1200.cpp +++ b/ci/ci1200.cpp @@ -9,8 +9,6 @@ #include "../ca/rmovana.h" #include "../ve/velib07.h" -//#include "../include/doc.h" -//#include "../include/rdoc.h" #include "../ca/commesse.h" /////////////////////////////////////////////////////////// diff --git a/ci/ci1350.cpp b/ci/ci1350.cpp index dcfaac1c8..5167f607e 100755 --- a/ci/ci1350.cpp +++ b/ci/ci1350.cpp @@ -13,8 +13,7 @@ // Recordset /////////////////////////////////////////////////////////// //recordset per stampe mensili (dettagliate per giorno) -TRil_ore_recordset::TRil_ore_recordset() -: TAS400_recordset("AS400(512)") +TRil_ore_recordset::TRil_ore_recordset() : TAS400_recordset("AS400(512)") { //const char* name, int pos, int len, TFieldtypes t = _alfafld, bool required = false, const TVariant& def = NULL_VARIANT create_field("Key1", -1, 20, _alfafld, true); diff --git a/ci/ci2400.cpp b/ci/ci2400.cpp index 6b6ad4a91..df543d5ff 100644 --- a/ci/ci2400.cpp +++ b/ci/ci2400.cpp @@ -404,6 +404,7 @@ protected: void get_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase) const; void put_row_anal_fields(TToken_string & row, const TString & cdc, const TString & cms, const TString & fase); long save_docs(TAssoc_array& docs, TAssoc_array& movs, TLog_report& log) const; + const TString& good_umart(const TString& codart, const TString& um) const; public: bool save_sheet(); @@ -638,10 +639,13 @@ bool TConsuntivazione_msk::load_sheet() TSheet_field& sheet = sfield(F_SHEET); sheet.destroy(); _locked = true; + TProgress_monitor mon(def.items(), TR("Caricamento ore..."), true); int r = 0; for (bool ok = def.move_first(); ok; ok = def.move_next()) { sheet.autoload_line(++r, rec); + if (!mon.add_status()) + break; if (rec.get_long(RILORE_NDOC) > 0) { TToken_string& row = sheet.row(r-1); @@ -749,6 +753,26 @@ void TConsuntivazione_msk::riempi_nuova_riga(int r) sheet.force_update(r); } +const TString& TConsuntivazione_msk::good_umart(const TString& codart, const TString& um) const +{ + // Reperisce unità di misura standard per codart + TString80 key; key << codart << "|1"; + const TString& defum = cache().get(LF_UMART, key, UMART_UM); + + // Controlla unità di misura fuori standard + if (um.full() && um != defum) + { + TLocalisamfile umart(LF_UMART); + umart.setkey(2); + umart.put(UMART_CODART, codart); + umart.put(UMART_UM, um); + if (umart.read() == NOERR) + return um; + } + + return defum; +} + bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLog_report& log) const { const char tipo_roa = rilore.get_char(RILORE_TIPORA); // 'R'isorsa o 'A'ttrezzatura @@ -777,6 +801,7 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo const real ore = rilore.get(RILORE_QTAORE); const real prezzo = rilore.get(RILORE_COSTO); const TString80 cms = rilore.get(RILORE_CODCMS); + const TString16 fas = rilore.get(RILORE_CODFASE); int found = 0; if (!ore.is_zero() && !prezzo.is_zero()) @@ -785,7 +810,8 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo { if (rdoc->get(RDOC_CODARTMAG) == codart && rdoc->get_real(RDOC_PREZZO) == prezzo && - rdoc->get(RDOC_CODCMS) == cms) + rdoc->get(RDOC_CODCMS) == cms && + rdoc->get(RDOC_FASCMS) == fas) { found = r; break; @@ -798,6 +824,7 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo riga.put(RDOC_CODART, codart); riga.put(RDOC_CODARTMAG, codart); riga.put(RDOC_CODCMS, cms); + riga.put(RDOC_FASCMS, fas); riga.put(RDOC_CHECKED, "X"); riga.put(RDOC_DESCR, anamag.get(ANAMAG_DESCR)); riga.put(RDOC_PREZZO, prezzo); @@ -808,14 +835,13 @@ bool TConsuntivazione_msk::add_ril_to_doc(TRectype& rilore, TDocumento& doc, TLo codiva = anamag.get(ANAMAG_CODIVA); riga.put(RDOC_CODIVA, codiva); + // Controllo unità di misura TString4 um = roa.get("S7"); - if (um.blank()) - { - TString80 key; key << codart << "|1"; - um = cache().get(LF_UMART, key, UMART_UM); - } + if (disponibilita) + um = good_umart(codart, EMPTY_STRING); + else + um = good_umart(codart, um); riga.put(RDOC_UMQTA, um); - found = riga.get_int(RDOC_NRIGA); } @@ -849,26 +875,31 @@ bool TConsuntivazione_msk::add_ril_to_mov(TRectype& rilore, TAnal_mov& mov, TLog const real ore = rilore.get(RILORE_QTAORE); const real prezzo = rilore.get(RILORE_COSTO); const TString80 cms = rilore.get(RILORE_CODCMS); + const TString16 fas = rilore.get(RILORE_CODFASE); bool done = !ore.is_zero() && !prezzo.is_zero(); if (done) { + // Cerca eventuale riga compatibile int i = 0; for (i = mov.rows(); i > 0; i--) { - TRectype& row = mov.body()[i]; - if (row.get(RMOVANA_CODCONTO) == conto && row.get(RMOVANA_CODCMS) == cms) + const TRectype& row = mov.body()[i]; + if (row.get(RMOVANA_CODCONTO) == conto && row.get(RMOVANA_CODCMS) == cms && row.get(RMOVANA_CODFASE) == fas) break; } + // Crea nuova riga se necessario if (i <= 0) { TRectype& row = mov.new_row(); row.put(RMOVANA_CODCONTO, conto); - row.put(RMOVANA_CODCMS, cms); + row.put(RMOVANA_CODCMS, cms); + row.put(RMOVANA_CODFASE, fas); i = row.get_int(RMOVANA_NUMRIG); } + // Incrementa importo TRectype& row = mov.body()[i]; - row.put(RMOVANA_SEZIONE, "D"); + row.put(RMOVANA_SEZIONE, 'D'); row.add(RMOVANA_IMPORTO, ore*prezzo); } @@ -981,15 +1012,16 @@ bool TConsuntivazione_msk::contabilizza() break; } - TMask m(TR("Parametri contabilizzazione"), 1, 28, 5); + TMask m(TR("Parametri contabilizzazione"), 1, 28, 7); m.add_button_tool(DLG_OK, "", TOOL_OK); m.add_button_tool(DLG_CANCEL, "", TOOL_CANCEL); + m.add_button_tool(DLG_INFO, "", TOOL_INFO); m.add_date(101, 0, PR("Dal giorno "), 1, 1, daily ? "" : "D").check_type(CHECK_REQUIRED); m.add_date(102, 0, PR("Al giorno "), 1, 2, daily ? "" : "D").check_type(CHECK_REQUIRED); m.add_boolean(103, 0, TR("Generazione analitica"), 1, 3, "D"); m.set(101, dal); m.set(102, al); - if (main_app().has_module(CAAUT)) + if (ca_config().get_int("Authorizations") > 1) { m.enable(103); m.set(103, "X"); @@ -1074,7 +1106,7 @@ bool TConsuntivazione_msk::contabilizza() << "\nFROM TIPO=C DADATA=" << dal << "\nTO TIPO=C DADATA=" << al; TISAM_recordset recset(query); - TProgind pi(recset.items(), msg); + TProgress_monitor pi(recset.items(), msg); TRectype& rilore = recset.cursor()->curr(); for (bool ok = recset.move_first(); ok; ok = recset.move_next()) { @@ -1175,9 +1207,9 @@ bool TConsuntivazione_msk::cerca_disponibilita(int riga) const const int col_cms = s.cid2index(S_CDC1); const TToken_string& r = s.row(riga); - TString80 cod_att; r.get(col_att, cod_att); cod_att.trim(); + TString80 cod_att; r.get(col_att, cod_att); cod_att.trim(); TString4 tipo_ora; r.get(col_ora, tipo_ora); tipo_ora.trim(); - TString80 cod_cms; r.get(col_cms, cod_att); cod_cms.trim(); + TString80 cod_cms; r.get(col_cms, cod_cms); cod_cms.trim(); for (int i = riga-1; i <= riga+1; i+=2) { if (i >= 0 && i < s.items()) @@ -1329,7 +1361,8 @@ bool TConsuntivazione_msk::on_field_event(TOperable_field& o, TField_event e, lo TToken_string& rowd = sheet.row(nr); rowd = row; rowd.add(orad, 4); - rowd.add(1, 5); + if (atr.get_int("I13") != 2) // Se non è un'attrezzatura forza le ore a 1 + rowd.add(1, 5); // altrimenti lascia la stessa quantità della riga collegata rowd.add(atr.get("R11"), 6); sheet.force_update(nr); } @@ -1454,14 +1487,17 @@ TConsuntivazione_msk::TConsuntivazione_msk() : _locked(false) { if (fasinfo.parent() == LF_COMMESSE) { + // Commessa in testata per filtro / proposta int h = ca_multilevel_code_info(LF_COMMESSE).levels(); - const int h1 = ca_create_fields_compact(*this, 0, LF_FASI, 2, y, dlg, dlg + 100); + const int h1 = ca_create_fields_compact(*this, 0, LF_FASI, 2, y, dlg, dlg + 100); y += 2; _cms_sid = dlg; _cms_lid = dlg + h - 1; _fase_sid = _cms_lid + 1; _fase_lid = dlg + h1 - 1; dlg += h1; + + // Commessa nelle righe const int sh = ca_create_fields_compact(sm, 0, LF_FASI, 1, sy, sdlg, sdlg + 50); sy += 2; _scms_sid = sdlg; @@ -1495,6 +1531,16 @@ TConsuntivazione_msk::TConsuntivazione_msk() : _locked(false) sdlg += h; } + // Sistema nome del campo CODCMS + for (short id = _scms_lid; id >= _scms_sid; id--) + { + TEdit_field& ef = sm.efield(id); + TFieldref* fr = (TFieldref*)ef.field(); + if (fr != NULL) + fr->set_name(RILORE_CODCMS); + } + + for (short id = S_CDC12 + 100; id >= S_CDC1 + 100; id--) { const int pos = sm.id2pos(id); diff --git a/ci/cimenu.men b/ci/cimenu.men index 245db2c97..80bbf8103 100755 --- a/ci/cimenu.men +++ b/ci/cimenu.men @@ -14,6 +14,14 @@ Picture = Module = 8 Flags = "F" Item_01 = "Parametri di configurazione", "ci0 -2", "F" +Item_02 = "Parametri Contabilità Analitica", "ca0 -2", "F" +Item_03 = "Tabelle di ripartizione", "ca0 -7", "F" +Item_04 = "Piano dei conti", "ca0 -3", "SF" +Item_05 = "Centri di costo", "ca0 -4", "SF" +Item_06 = "Commesse", "ca0 -5", "SF" +Item_07 = "Fasi", "ca0 -6", "SF" +Item_08 = "Responsabili commessa", "ca0 -0 RSP", "F" +Item_09 = "Tipi Lavoro", "ca0 -0 TPL", "F" [CIMENU_003] Caption = "Rilevazione Ore"