diff --git a/ve/f33.dir b/ve/f33.dir index 611612ec9..4219a7ce1 100755 --- a/ve/f33.dir +++ b/ve/f33.dir @@ -1,3 +1,3 @@ 33 0 -$doc|0|0|496|0|Documenti di vendita|NDOC*3|| +$doc|0|0|516|0|Documenti di vendita|NDOC*3|| diff --git a/ve/f33.trr b/ve/f33.trr index cafdf66a1..f058e17d4 100755 --- a/ve/f33.trr +++ b/ve/f33.trr @@ -1,5 +1,5 @@ 33 -77 +78 CODNUM|1|4|0|Codice della numerazione ANNO|2|4|0|Anno PROVV|1|1|0|Tipo numerazione

rovvisorio efinitivo @@ -75,6 +75,7 @@ COLL_GOLEM|11|10|0|Collegamento lista di GOLEM DOCEVASO|8|1|0|Ordine evaso CODCMS|1|20|0|Codice Commessa FASCMS|1|10|0|Fase Commessa +CODCOSTO|1|20|0|Centro di costo NUMREG|3|7|0|Numero movimento contabilizzato NUMANT|3|7|0|Numero movimento anticipo contabilizzato 3 diff --git a/ve/f34.dir b/ve/f34.dir index 5c5ee6ee5..65d952295 100755 --- a/ve/f34.dir +++ b/ve/f34.dir @@ -1,3 +1,3 @@ 34 0 -$rdoc|21|21|453|31|Righe documenti di vendita|NDOC*3|| +$rdoc|21|21|473|31|Righe documenti di vendita|NDOC*3|| diff --git a/ve/f34.trr b/ve/f34.trr index 518747336..a76817fe8 100755 --- a/ve/f34.trr +++ b/ve/f34.trr @@ -1,5 +1,5 @@ 34 -52 +53 CODNUM|1|4|0|Codice Numeriazione ANNO|2|4|0|Anno PROVV|1|1|0|Tipo numerazione

rovvisoria efinitiva @@ -52,6 +52,7 @@ DANDOC|3|7|0|Numero del documento originale DAIDRIGA|3|6|0|Identificatore riga originale CODCMS|1|20|0|Codice Commessa FASCMS|1|10|0|Fase Commessa +CODCOSTO|1|20|0|Centro di costo 4 CODNUM+ANNO+PROVV+NDOC+NRIGA| CODNUM+ANNO+PROVV+CODART+LIVELLO+CODMAG|X diff --git a/ve/fatturac.src b/ve/fatturac.src index ee8522c5c..89fe3585a 100755 --- a/ve/fatturac.src +++ b/ve/fatturac.src @@ -127,16 +127,12 @@ CAUSMAG = S_OBBLIGATORIO //2900 CAUSMAGC = S_DISABILITATO //2900 DESCRMAG = S_NORMALE //2900 DESCRMAGC = S_DISABILITATO //2900 -CODCMS = S_NORMALE //3000 -DESCRCMS = S_NORMALE //3000 -FASCMS = S_NORMALE //3000 -DESCRFAS = S_NORMALE //3000 BLANK = S_DISABILITATO //4000 [DEFAULT] [SHEET] -NCOLS=22 +NCOLS=20 1=FR_CODMAG 2=FR_CODDEP 3=FR_CODART @@ -157,8 +153,6 @@ NCOLS=22 18=FR_CAUS 19=FR_CODMAGC 20=FR_CODDEPC -21=FR_CODCMS -22=FR_FASCMS [RIGHE] NTIPIRIGA=* @@ -195,7 +189,6 @@ NHANDLER=0 2400 = S_NORMALE 2500 = S_NORMALE 2900 = S_NORMALE -3000 = S_NORMALE 4000 = S_NORMALE [ORDINEGRUPPI] @@ -224,5 +217,4 @@ NGROUPS=25 22=1900 23=1000 24=2900 -25=3000 diff --git a/ve/ve0100a.uml b/ve/ve0100a.uml index 34e2cbacc..136d5e165 100755 --- a/ve/ve0100a.uml +++ b/ve/ve0100a.uml @@ -1,6 +1,6 @@ #include "veuml.h" -TOOLBAR "" 0 20 60 2 +TOOLBAR "" 0 -2 0 2 #include "toolbar.h" ENDPAGE diff --git a/ve/ve0300a.src b/ve/ve0300a.src index f54a73db8..b16630458 100755 --- a/ve/ve0300a.src +++ b/ve/ve0300a.src @@ -1682,72 +1682,6 @@ TYPE=T_STRINGA PROMPT="" SIZE=50 -[CODCMS] -GROUP=3000 -X=2 -Y=1 -FIELDNAME=CODCMS -MSKID=F_CODCMS -TYPE=T_STRINGA -PROMPT="Commessa : Codice " -USE=CMS -INPUT=CODTAB F_CODCMS -DISPLAY="Codice@20" CODTAB~"Descrizione@50" S0 -OUTPUT=F_CODCMS CODTAB~F_DESCRCMS S0 -WARNING=Commessa non trovata -SIZE=20 -FLAG=UZ -HELP=Inserisci il codice della commessa -SPECIAL=CH NORMAL - -[DESCRCMS] -GROUP=3000 -X=20 -Y=2 -MSKID=F_DESCRCMS -TYPE=T_STRINGA -USE=CMS KEY 2 -INPUT=S0 F_DESCRCMS -DISPLAY="Descrizione@50" S0~"Codice@20" CODTAB -COPY=OU F_CODCMS -WARNING=Commessa non trovata -PROMPT="" -SIZE=70 -SPECIAL=CH NORMAL - -[FASCMS] -GROUP=3000 -X=2 -Y=3 -FIELDNAME=FASCMS -MSKID=F_FASCMS -TYPE=T_STRINGA -PROMPT=" Fase " -USE=FSC -INPUT=CODTAB F_FASCMS -DISPLAY="Codice@10" CODTAB~"Descrizione@50" S0 -OUTPUT=F_FASCMS CODTAB~F_DESCRFAS S0 -WARNING=Fase commessa non trovata -SIZE=10 -FLAG=UZ -HELP=Inserisci il codice della fase commessa -SPECIAL=CH NORMAL - -[DESCRFAS] -GROUP=3000 -X=20 -Y=4 -MSKID=F_DESCRFAS -TYPE=T_STRINGA -PROMPT="" -USE=FSC KEY 2 -INPUT=S0 F_DESCRFAS -DISPLAY="Descrizione@50" S0~"Codice@10" CODTAB -COPY=OU F_FASCMS -WARNING=Fase commessa non trovata -SIZE=50 -SPECIAL=CH NORMAL - [BLANK] GROUP=4000 X=100 diff --git a/ve/ve0300b.dat b/ve/ve0300b.dat index 8b5aa258e..d5f267f43 100755 --- a/ve/ve0300b.dat +++ b/ve/ve0300b.dat @@ -1,31 +1,51 @@ -STATORIGA|2|1|Stato|1 +LORDO|4||Lordo|5 TIPORIGA|2|2|Tipo riga|2 CODMAG[1,3]|2|3|Mag. |3 CODMAG[4,5]|2|2|Dep.|2 -CODART|2|20|Cod. Art.|20 -CODG1|2|9|Cod.G.1|9 -CODG2|2|9|Cod.G.2|9 -CODG3|2|9|Cod.G.3|9 -CODG4|2|9|Cod.G.4|9 +CODART|2|20|Codice Articolo|20 +CODG1|2|9|Codice\nLivello 1|9 +CODG2|2|9|Codice\nLivello 2|9 +CODG3|2|9|Codice\nLivello 3|9 +CODG4|2|9|Codice\nLivello 4|9 DESCR|2|50|Descrizione|50 UMQTA|2|2|UM|2 -QTA|3|1103|Qta|11 +QTA|3|1305|Quantita'|11 PREZZO|3|1802|Prezzo|18 -QTAEVASA|3|1103|Qta Evasa|11 -RIGAEVASA|4||Riga Evasa|1 +QTAEVASA|3|1305|Quantita'\nEvasa|11 +RIGAEVASA|5||Evasa|1 TARA|3|1502|Tara|15 -PNETTO|3|1502|P.Netto|15 +PNETTO|3|1502|Peso Netto|15 NCOLLI|3|7|N.Colli|7 DAEVADERE|4||Da evadere|1 SCONTO|2|25|Sconto|25 -PERCPROV|3|502|Perc.Provv.|5 +PERCPROV|3|502|Perc.\nProvv.|5 IMPFISUN|4||Imp.Fisso unitario|1 IMPFISSO|3|1802|Importo Fisso|18 -CODIVA|2|4|Cod.IVA|4 +CODIVA|2|4|Codice\nIVA|4 ADDIVA|4||Addebito IVA|1 ASPBENI|2|3|Aspetto beni|3 -CODCAUS|2|3|Causale Mag.|12 -CODMAGC[1,3]|2|3|Mag.Coll.|9 -CODMAGC[4,5]|2|2|Dep.Coll.|9 +CODCAUS|2|3|Causale\nMagazzino|12 +CODMAGC[1,3]|2|3|Magazzino\nCollegato|9 +CODMAGC[4,5]|2|2|Deposito\nCollegato|9 +DATACONS|4|10|Data\nconsegna|10 CODARTMAG|2|20|Cod. Art. Mag.|20 CHECKED|4|10|Controllato|11 +QTAGG1|3|1305|Quantita'\nagg. 1|13 +QTAGG2|3|1305|Quantita'\nagg. 2|13 +QTAGG3|3|1305|Quantita'\nagg. 3|13 +QTAGG4|3|1305|Quantita'\nagg. 4|13 +QTAGG5|3|1305|Quantita'\nagg. 5|13 +IMPIANTO|2|5|Impianto|8 +LINEA|2|5|Linea|5 +CDC1|2|20|Centro di costo 1|20 +CDC2|2|20|Centro di costo 2|20 +CDC3|2|20|Centro di costo 3|20 +CDC4|2|20|Centro di costo 4|20 +CDC5|2|20|Centro di costo 5|20 +CDC6|2|20|Centro di costo 6|20 +CDC7|2|20|Centro di costo 7|20 +CDC8|2|20|Centro di costo 8|20 +CDC9|2|20|Centro di costo 9|20 +CDC10|2|20|Centro di costo 10|20 +CDC11|2|20|Centro di costo 11|20 +CDC12|2|20|Centro di costo 12|20 diff --git a/ve/velib.h b/ve/velib.h index e2b54d834..907b8bf20 100755 --- a/ve/velib.h +++ b/ve/velib.h @@ -790,6 +790,9 @@ protected: void sconto_testa2mask(); void spese2mask(); + int insert_anal_fields(TMask& m, int page, int lf, int& y, short& dlg, short& dlgd, bool required); + void insert_anal_page(); + void configura_sheet(TSheet_field& sheet); static bool ss_notify(TSheet_field& ss, int r, KEY key); static bool ss_handler(TMask_field& f, KEY key); diff --git a/ve/velib02.cpp b/ve/velib02.cpp index 62787fe03..bb882e6f4 100755 --- a/ve/velib02.cpp +++ b/ve/velib02.cpp @@ -832,7 +832,8 @@ void TRiga_documento::autosave(TSheet_field & f) const int num = numero() - 1; if (num >= 0 && num < f.items()) - { + { + TMask& m = f.sheet_mask(); TToken_string & row = f.row(num); const int lordo_id = f.cid2index(FR_LORDO); @@ -840,10 +841,10 @@ void TRiga_documento::autosave(TSheet_field & f) if (lordo) { row.add(" ", lordo_id); - f.sheet_mask().reset(FR_LORDO); + m.reset(FR_LORDO); } put( RDOC_TIPORIGA, row.get( f.cid2index(FR_TIPORIGA )) ); - TString16 codmag(row.get(f.cid2index(FR_CODMAG))); + TString8 codmag(row.get(f.cid2index(FR_CODMAG))); codmag.left_just(3); codmag << row.get( f.cid2index(FR_CODDEP )); @@ -876,7 +877,7 @@ void TRiga_documento::autosave(TSheet_field & f) const int prezzo_id = f.cid2index(FR_PREZZO); real prezzo(row.get(prezzo_id)); - const TString16 codiva(row.get(f.cid2index(FR_CODIVA))); + const TString8 codiva(row.get(f.cid2index(FR_CODIVA))); if (lordo) { iva(codiva).scorpora(prezzo, doc().decimals(TRUE)); @@ -917,8 +918,18 @@ void TRiga_documento::autosave(TSheet_field & f) put( RDOC_QTAGG5, row.get( f.cid2index(FR_QTAGG5 )) ); put( RDOC_IMPIANTO, row.get( f.cid2index(FR_IMPIANTO )) ); put( RDOC_LINEA, row.get( f.cid2index(FR_LINEA )) ); - put( RDOC_CODCMS, row.get( f.cid2index(FR_CODCMS)) ); - put( RDOC_FASCMS, row.get( f.cid2index(FR_FASCMS)) ); + + for (short cdcid = FR_CDC1; cdcid <= FR_CDC12; cdcid++) + { + const int pos = m.id2pos(cdcid); + if (pos < 0) + break; + TMask_field& fld = m.fld(pos); + const TFieldref* fldref = fld.field(); + if (fldref == NULL) + break; + fldref->write(fld.get(), *this); + } } } @@ -959,7 +970,7 @@ void TRiga_documento::autoload(TSheet_field & f) row.add( get( RDOC_ADDIVA ), f.cid2index(FR_ADDIVA )); row.add( get( RDOC_ASPBENI ), f.cid2index(FR_ASPBENI )); row.add( get( RDOC_CAUSMAG ), f.cid2index(FR_CAUS )); - const TString16 codmagc(get("CODMAGC")); + const TString8 codmagc(get("CODMAGC")); row.add( codmagc.left(3), f.cid2index(FR_CODMAGC )); row.add( codmagc.mid(3), f.cid2index(FR_CODDEPC )); row.add( get( RDOC_DATACONS ), f.cid2index(FR_DATACONS )); @@ -972,8 +983,20 @@ void TRiga_documento::autoload(TSheet_field & f) row.add( get( RDOC_QTAGG5) , f.cid2index(FR_QTAGG5)); row.add( get( RDOC_IMPIANTO) , f.cid2index(FR_IMPIANTO)); row.add( get( RDOC_LINEA) , f.cid2index(FR_LINEA)); - row.add( get( RDOC_CODCMS) , f.cid2index(FR_CODCMS)); - row.add( get( RDOC_FASCMS) , f.cid2index(FR_FASCMS)); + + TMask& m = f.sheet_mask(); + for (short cdcid = FR_CDC1; cdcid <= FR_CDC12; cdcid++) + { + const int pos = m.id2pos(cdcid); + if (pos < 0) + break; + TMask_field& fld = m.fld(pos); + const TFieldref* fldref = fld.field(); + if (fldref == NULL) + break; + const TString& val = fldref->read(*this); + row.add(val, f.cid2index(cdcid)); + } } TArticolo_giacenza * TRiga_documento::articolo() const diff --git a/ve/velib03.cpp b/ve/velib03.cpp index 8e1380387..2565d80a5 100755 --- a/ve/velib03.cpp +++ b/ve/velib03.cpp @@ -1014,6 +1014,7 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const const TDate datacons(get_date(DOC_DATACONS)); const TString80 codcms(get(DOC_CODCMS)); const TString80 fascms(get(DOC_FASCMS)); + const TString80 codcos(get(DOC_CODCOSTO)); for (int i = rows; i > 0; i--) { @@ -1040,11 +1041,12 @@ int TDocumento::write_rewrite(TBaseisamfile & f, bool re) const r.put(RDOC_DATACONS, datacons); } - if (r.get(RDOC_CODCMS).empty()) + if (r.get(RDOC_CODCMS).blank() && r.get(RDOC_FASCMS).blank() && r.get(RDOC_CODCOSTO).blank()) + { r.put(RDOC_CODCMS, codcms); - if (r.get(RDOC_FASCMS).empty()) r.put(RDOC_FASCMS, fascms); - + r.put(RDOC_CODCOSTO, codcos); + } } if (is_ordine()) ((TDocumento *)this)->put(DOC_DOCEVASO, docevaso); // Tutte le righe evase -> doc evaso @@ -2099,19 +2101,23 @@ TRecord_array& TDocumento::body(int logicnum) const const TDate datacons(get_date(DOC_DATACONS)); const TString80 codcms(get(DOC_CODCMS)); const TString80 fascms(get(DOC_FASCMS)); + const TString80 codcos(get(DOC_CODCOSTO)); for (int i = r.rows(); i > 0; i--) { - TRectype & rec = r[i]; + TRectype& rec = r[i]; TRecfield dcons(rec, RDOC_DATACONS); if (is_ordine() && datacons == dcons) dcons = ""; TRecfield ccms(rec, RDOC_CODCMS); TRecfield fcms(rec, RDOC_FASCMS); - if (codcms == ccms) + TRecfield ccos(rec, RDOC_CODCOSTO); + if (codcms == ccms && fascms == fcms && codcos == ccos) + { ccms = ""; - if (fascms == fcms) fcms = ""; + ccos = ""; + } } } return r; diff --git a/ve/velib04b.cpp b/ve/velib04b.cpp index ec395c74b..45ac1fcce 100755 --- a/ve/velib04b.cpp +++ b/ve/velib04b.cpp @@ -173,8 +173,12 @@ int TMovimentoPN_VE::set_cg_rec(int n, const TImporto& imp, TBill& conto, const if (main_app().has_module(CMAUT, CHK_DONGLE)) { - rec.put(RMV_CODCMS,codcms); - rec.put(RMV_FASCMS,fascms); + TString cms = codcms; + TString fsc = fascms; + if (cms.blank() && fsc.blank()) // Se la commessa e' vuota ... + conto.default_cdc(cms, fsc); // ... ne cerco una standard + rec.put(RMV_CODCMS, cms); + rec.put(RMV_FASCMS, fsc); } rec.put(RMV_DESCR, desc); diff --git a/ve/velib06.cpp b/ve/velib06.cpp index e7e561364..545e2f22f 100755 --- a/ve/velib06.cpp +++ b/ve/velib06.cpp @@ -21,9 +21,11 @@ #include "veini.h" #include "sconti.h" +#include "../cg/cg2103.h" +#include "../ca/calib01.h" #include "doc.h" -#include "rdoc.h" +#include "rdoc.h" TDocumento_mask::TDocumento_mask(const char* td) : TVariable_mask(), _progs_page(-1), @@ -48,12 +50,20 @@ TDocumento_mask::TDocumento_mask(const char* td) _sheet->set_notify( ss_notify ); _sheet->set_append(FALSE); - TList_field& listbox = ( TList_field& )field( F_LBTIPORIGA ); + TList_field& listbox = (TList_field&)field(F_LBTIPORIGA); TTipo_documento& tdoc = (TTipo_documento&)_doc.tipo(); - TToken_string& keys = (TToken_string&) tdoc.keys_descrs()[0]; - TToken_string& descrs = (TToken_string&) tdoc.keys_descrs()[1]; + TToken_string& keys = (TToken_string&)tdoc.keys_descrs()[0]; + TToken_string& descrs = (TToken_string&)tdoc.keys_descrs()[1]; listbox.replace_items(keys, descrs); + + // Controlla se deve generare la pagina di analitica + if (dongle().active(CAAUT)) + { + const TCausale causale(tdoc.causale()); + if (causale.link_analitica()) + insert_anal_page(); + } configura_sheet(*_sheet); @@ -69,7 +79,6 @@ TDocumento_mask::TDocumento_mask(const char* td) for (i = fields() - 1; i >= 0; i--) { TMask_field & f = fld(i); - if (f.is_editable()) f.set_handler(universal_handler); } @@ -239,6 +248,131 @@ TDocumento_mask::~TDocumento_mask() delete _smartcard; } +int TDocumento_mask::insert_anal_fields(TMask& m, int page, int lf, int& y, + short& dlg, short& dlgd, bool required) +{ + const int h = ca_create_fields(m, page, lf, 2, y, dlg, dlgd); + + const bool main_mask = m.id2pos(F_SHEET) > 0; + + for (int i = 0; i < h; i++) + { + TEdit_field& fld = m.efield(dlg+i); + int logic = lf; + if (logic == LF_FASI) + { + const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); + if (fasinfo.parent() != 0) + { + const TMultilevel_code_info& parinfo = ca_multilevel_code_info(fasinfo.parent()); + if (i < parinfo.levels()) + logic = fasinfo.parent(); + } + } + + const char* fieldname = NULL; + switch(logic) + { + case LF_COMMESSE: fieldname = DOC_CODCMS; break; + case LF_FASI : fieldname = DOC_FASCMS; break; + default : fieldname = DOC_CODCOSTO; break; + } + TFieldref* f = (TFieldref*)fld.field(); + f->set_name(fieldname); + + fld.check_type(required ? CHECK_REQUIRED : CHECK_NORMAL); + + TEdit_field& dfld = m.efield(dlgd+i); + dfld.set_field(EMPTY_STRING); // Toglie campi che fan saltare gli output! + + if (main_mask) + { + TSheet_field& sf = sfield(F_SHEET); + const TString head = fld.prompt(); + const int colid = FR_CDC1+(fld.dlg()-F_CDC1); + sf.set_column_header(colid, head); + if (fld.size() > head.len()) + sf.set_column_width(colid, fld.size()*8); // XI_FU_MULTIPLE + + TMask& sm = sf.sheet_mask(); + TString80 str; str << *fld.field(); + sm.efield(colid).set_field(str); // Ricopia il campo nella maschera di riga per poterlo salvare! + } + } + + y += h+1; + dlg += h; dlgd += h; + return h; +} + +void TDocumento_mask::insert_anal_page() +{ + const int newpage = win2page(_sheet->parent())+1; + insert_page("Pagina", newpage); // Inserisce una pagina vuota con un titolo a caso + + // Rinumera i titoli di tutte le pagine + const int lastpage = win2page(fld(fields()-1).parent()); // Calcola in numero dell'ultima pagina + TToken_string caption; + int i; + for (i = 0; i <= lastpage; i++) + { + TString16 tag = TR("Pag."); + tag << (i+1); // Calcola il titolo di ogni pagina + caption.add(tag); + } + set_caption(caption); // Setta tutti i titoli contemporaneamente + + add_groupbox(DLG_NULL, newpage, "", 1, 0, 78, 6); + add_string(DLG_NULL, newpage, TR("Cod. num. "), 2, 1, 4, "D").set_group(2); + add_string(DLG_NULL, newpage, "", 24, 1, 50, "D").set_group(3); + add_string(DLG_NULL, newpage, TR("Tipo doc. "), 2, 2, 4, "D").set_group(4); + add_string(DLG_NULL, newpage, "", 24, 2, 50, "D").set_group(5); + add_number(DLG_NULL, newpage, TR("Esercizio "), 2, 3, 4, "D").set_group(9); + add_number(DLG_NULL, newpage, TR("Numero doc. "), 24, 3, 6, "D").set_group(6); + add_date(DLG_NULL, newpage, TR("Data "), 46, 3, "D").set_group(7); + add_string(DLG_NULL, newpage, TR("Stato "), 67, 3, 1, "D").set_group(8); + add_number(DLG_NULL, newpage, TR("Cliente "), 2, 4, 6, "D").set_group(10); + add_string(DLG_NULL, newpage, "", 24, 4, 50, "D").set_group(11); + + add_groupbox(DLG_NULL, newpage, TR("Contabilita' Analitica"), 1, 6, 78, 14); + + const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); + const bool use_fsc = fasinfo.levels() > 0; + TConfig_anal ini; + const bool fsc_req = use_fsc && ini.get_bool("FscRequired"); + + int y = 7; + short dlg = F_CDC1; // id del primo campo da generare + short dlgd = F_DESCDC1; + + for (i = 0; i < 2; i++) + { + const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2 + if (level == "CDC") // Crea centro di costo + { + if (use_fsc && fasinfo.parent() == LF_CDC) + insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req); + else + { + const bool cdc_req = ini.get_bool("CdcRequired"); + insert_anal_fields(*this, newpage, LF_CDC, y, dlg, dlgd, cdc_req); + } + } else + if (level == "CMS") // Crea commessa + { + if (use_fsc && fasinfo.parent() == LF_COMMESSE) + insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req); + else + { + const bool cms_req = ini.get_bool("CmsRequired"); + insert_anal_fields(*this, newpage, LF_COMMESSE, y, dlg, dlgd, cms_req); + } + } + } + if (use_fsc && fasinfo.parent() <= 0) + insert_anal_fields(*this, newpage, LF_FASI, y, dlg, dlgd, fsc_req); +} + void TDocumento_mask::configura_sheet(TSheet_field& sheet) { TBit_array to_delete(MAX_COLUMNS); @@ -275,7 +409,6 @@ void TDocumento_mask::configura_sheet(TSheet_field& sheet) else to_delete.set(0L); to_delete.reset(1); - if (!to_delete[sheet.cid2index(FR_CODDEP)]) sheet.enable_column(FR_CODDEP, _ges_dep && _ges_mag); @@ -288,18 +421,35 @@ void TDocumento_mask::configura_sheet(TSheet_field& sheet) to_delete.set(sheet.cid2index(FR_CODARTMAG)); to_delete.set(sheet.cid2index(FR_CHECKED)); + const bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); + if (ca_active) + { + const TMultilevel_code_info& cdc = ca_multilevel_code_info(LF_CDC); + const TMultilevel_code_info& cms = ca_multilevel_code_info(LF_COMMESSE); + const TMultilevel_code_info& fas = ca_multilevel_code_info(LF_FASI); + const int levels = cdc.levels() + cms.levels() + fas.levels(); + for (short cid = FR_CDC1; cid <= FR_CDC12; cid++) + { + const int level = cid-FR_CDC1; + to_delete.set(sheet.cid2index(cid), level >= levels); + if (level < levels) + colonne.add(cid); + } + } + for ( i = MAX_COLUMNS - 1; i >= 0; i-- ) + { if( to_delete[i] ) { sheet.enable_column( i + FIRST_FIELD, FALSE); sheet.delete_column( i + FIRST_FIELD); } + } if (!sheet.user_saved_columns_order()) sheet.set_columns_order(&colonne); } - TCond_vendita& TDocumento_mask::condv() const { if (_condv == NULL) @@ -311,7 +461,6 @@ TCond_vendita& TDocumento_mask::condv() const } void TDocumento_mask::update_progs(bool stop_run) - { static bool updating_progs = false; @@ -901,6 +1050,39 @@ TVariable_mask* TDocumento_mask::riga_mask(int numriga) } m->set_handler(DLG_USER, link_handler); } + + const bool ca_active = dongle().active(CMAUT) || dongle().active(CAAUT); + if (ca_active) + { + TConfig_anal ini; + const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); + const bool use_fsc = fasinfo.levels() > 0; + + int y = 1; + short dlg = FR_CDC1; // id del primo campo da generare + short dlgd = FR_DESCDC1; + + for (i = 0; i < 2; i++) + { + const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2 + if (level == "CDC") // Crea centro di costo + { + if (use_fsc && fasinfo.parent() == LF_CDC) + insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); + else + insert_anal_fields(*m, 2, LF_CDC, y, dlg, dlgd, false); + } else + if (level == "CMS") // Crea commessa + { + if (use_fsc && fasinfo.parent() == LF_COMMESSE) + insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); + else + insert_anal_fields(*m, 2, LF_COMMESSE, y, dlg, dlgd, false); + } + } + if (use_fsc && fasinfo.parent() <= 0) + insert_anal_fields(*m, 2, LF_FASI, y, dlg, dlgd, false); + } } m->set_sheet((TSheet_field *)&(field(F_SHEET))); diff --git a/ve/verig.h b/ve/verig.h index 0385d0141..1930eb0e3 100755 --- a/ve/verig.h +++ b/ve/verig.h @@ -1,7 +1,6 @@ #ifndef __VERIG_H #define __VERIG_H - #define FR_LORDO 101 #define FR_TIPORIGA 102 #define FR_CODMAG 103 @@ -75,32 +74,53 @@ #define FR_QTAGG5 137 #define FR_IMPIANTO 138 #define FR_LINEA 139 -#define FR_CODCMS 140 -#define FR_FASCMS 141 -#define FR_JOLLY1 142 -#define FR_JOLLY2 143 -#define FR_JOLLY3 144 -#define FR_JOLLY4 145 -#define FR_JOLLY5 146 -#define FR_JOLLY6 147 -#define FR_JOLLY7 148 -#define FR_JOLLY8 149 -#define FR_JOLLY9 150 -#define FR_JOLLY10 151 -#define FR_END 152 +#define FR_CDC1 140 +#define FR_CDC2 141 +#define FR_CDC3 142 +#define FR_CDC4 143 +#define FR_CDC5 144 +#define FR_CDC6 145 +#define FR_CDC7 146 +#define FR_CDC8 147 +#define FR_CDC9 148 +#define FR_CDC10 149 +#define FR_CDC11 150 +#define FR_CDC12 151 +#define FR_JOLLY1 152 +#define FR_JOLLY2 153 +#define FR_JOLLY3 154 +#define FR_JOLLY4 155 +#define FR_JOLLY5 156 +#define FR_JOLLY6 157 +#define FR_JOLLY7 158 +#define FR_JOLLY8 159 +#define FR_JOLLY9 160 +#define FR_JOLLY10 161 +#define FR_END 162 #define MAX_COLUMNS FR_END-FR_LORDO -#define FR_DESMAG 250 -#define FR_DESDEP 251 -#define FR_DESIVA 252 -#define FR_DESASP 253 -#define FR_DESTIPORIGA 254 -#define FR_DESCRCAUS 255 -#define FR_DESMAGC 256 -#define FR_DESDEPC 257 -#define FR_DESIMP 258 -#define FR_DESLNP 259 -#define FR_DESCMS 260 -#define FR_DESFAS 261 -#define FR_CODGOL 262 +#define FR_DESMAG 270 +#define FR_DESDEP 271 +#define FR_DESIVA 272 +#define FR_DESASP 273 +#define FR_DESTIPORIGA 274 +#define FR_DESCRCAUS 275 +#define FR_DESMAGC 276 +#define FR_DESDEPC 277 +#define FR_DESIMP 278 +#define FR_DESLNP 279 +#define FR_CODGOL 280 +#define FR_DESCDC1 281 +#define FR_DESCDC2 282 +#define FR_DESCDC3 283 +#define FR_DESCDC4 284 +#define FR_DESCDC5 285 +#define FR_DESCDC6 286 +#define FR_DESCDC7 287 +#define FR_DESCDC8 288 +#define FR_DESCDC9 289 +#define FR_DESCDC10 290 +#define FR_DESCDC11 291 +#define FR_DESCDC12 292 + #endif diff --git a/ve/verig.uml b/ve/verig.uml index 487202fac..2b5213ffd 100755 --- a/ve/verig.uml +++ b/ve/verig.uml @@ -1,6 +1,6 @@ #include "veuml.h" #ifdef FULL_SCREEN -TOOLBAR "" 0 20 0 2 +TOOLBAR "" 0 -2 0 2 BUTTON DLG_OK 10 2 BEGIN @@ -1725,83 +1725,6 @@ ENDIF END ENDIF -IFDEF(FLD_CODCMS) -STRING FR_CODCMS 20 -BEGIN -IFDEF(X_CODCMS) - PROMPT X_CODCMS Y_CODCMS PR_CODCMS -ELSEIF - PROMPT 2 11 "Commessa " -ENDIF - USE CMS - INPUT CODTAB FR_CODCMS - DISPLAY "Codice commessa@20" CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT FR_CODCMS CODTAB - OUTPUT FR_DESCMS S0 - FIELD CODCMS - FLAGS "UZ" -IFDEF(CH_CODCMS) - CHECKTYPE CH_CODCMS -ELSEIF - CHECKTYPE NORMAL -ENDIF -END - -STRING FR_DESCMS 50 -BEGIN -IFDEF(X_CODCMS) - PROMPT 14 Y_CODCMS "" -ELSEIF - PROMPT 14 12 "" -ENDIF - USE CMS KEY 2 - INPUT S0 FR_DESCMS - DISPLAY "Descrizione @50" S0 - DISPLAY "Codice commessa@20" CODTAB - COPY OUTPUT FR_CODCMS - CHECKTYPE NORMAL -END - -STRING FR_FASCMS 10 -BEGIN -IFDEF(X_FASCMS) - PROMPT X_FASCMS Y_FASCMS PR_FASCMS -ELSEIF - PROMPT 2 13 "Fase " -ENDIF - USE FSC - INPUT CODTAB FR_FASCMS - DISPLAY "Codice Fase@10" CODTAB - DISPLAY "Descrizione @50" S0 - OUTPUT FR_FASCMS CODTAB - OUTPUT FR_DESCMS S0 - FIELD FASCMS - FLAGS "UZ" -IFDEF(CH_FASCMS) - CHECKTYPE CH_CODCMS -ELSEIF - CHECKTYPE NORMAL -ENDIF -END - -STRING FR_DESFAS 50 -BEGIN -IFDEF(X_FASCMS) - PROMPT 14 Y_FASCMS "" -ELSEIF - PROMPT 14 14 "" -ENDIF - USE FAS KEY 2 - INPUT S0 FR_DESFAS - DISPLAY "Descrizione @50" S0 - DISPLAY "Codice Fase@10" CODTAB - COPY OUTPUT FR_FASCMS - CHECKTYPE NORMAL -END - -ENDIF - #endif IFDEF(JOLLY) @@ -1838,6 +1761,119 @@ END ENDPAGE +PAGE "Pag.3" -1 -1 MASK_WIDTH MASK_HEIGHT + +GROUPBOX DLG_NULL 78 14 +BEGIN + PROMPT 1 0 "Contabilita' analitica" +END + +IFDEF(FLD_CDC1) + +STRING FR_CDC1 20 +BEGIN + PROMPT 2 1 "Cms1 " + FLAGS "B" +END + +STRING FR_CDC2 20 +BEGIN + PROMPT 2 2 "Cms2 " + FLAGS "B" +END + +STRING FR_CDC3 20 +BEGIN + PROMPT 2 3 "Cms3 " + FLAGS "B" +END + +STRING FR_CDC4 20 +BEGIN + PROMPT 2 4 "Cms4 " + FLAGS "B" +END + +STRING FR_CDC5 20 +BEGIN + PROMPT 2 5 "Cms5 " + FLAGS "B" +END + +STRING FR_CDC6 20 +BEGIN + PROMPT 2 6 "Cms6 " + FLAGS "B" +END + +STRING FR_CDC7 20 +BEGIN + PROMPT 2 7 "Cms7 " + FLAGS "B" +END + +STRING FR_CDC8 20 +BEGIN + PROMPT 2 8 "Cms8 " + FLAGS "B" +END + +STRING FR_CDC9 20 +BEGIN + PROMPT 2 9 "Cms9 " + FLAGS "B" +END + +STRING FR_CDC10 20 +BEGIN + PROMPT 2 10 "Cms10 " + FLAGS "B" +END + +STRING FR_CDC11 20 +BEGIN + PROMPT 2 11 "Cms11 " + FLAGS "B" +END + +STRING FR_CDC12 20 +BEGIN + PROMPT 2 12 "Cms12 " + FLAGS "B" +END + +ENDIF // Campi analitici + +#ifndef FULL_SCREEN +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -14 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -24 -1 "" +END + +#ifndef PAGE_1 +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -34 -1 "Elimina" + MESSAGE EXIT,K_DEL +END + +BUTTON DLG_USER 10 2 +BEGIN + PROMPT -44 -1 "~Collega" + PICTURE BMP_LINK +END +#define PAGE_1 +#endif + +#endif + +ENDPAGE + IFDEF(JOLLYP) INCLDEF(JOLLYP) diff --git a/ve/verig00.uml b/ve/verig00.uml index e91f72907..f4499465f 100755 --- a/ve/verig00.uml +++ b/ve/verig00.uml @@ -40,7 +40,7 @@ DEFINE_FIELD(QTAGG4) DEFINE_FIELD(QTAGG5) DEFINE_FIELD(IMPIANTO) DEFINE_FIELD(LINEA) -DEFINE_FIELD(CODCMS) +DEFINE_FIELD(CDC1) DEFINE(JOLLYP, "jolly.uml") diff --git a/ve/verig01.uml b/ve/verig01.uml index b31e9891b..93286663b 100755 --- a/ve/verig01.uml +++ b/ve/verig01.uml @@ -43,7 +43,6 @@ DEFINE_FIELD(CODDEPC) DEFINE_FIELD(DESDEPC) DEFINE_FIELD(IMPIANTO) DEFINE_FIELD(LINEA) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig02.uml b/ve/verig02.uml index 1d13cbe17..3b2c03197 100755 --- a/ve/verig02.uml +++ b/ve/verig02.uml @@ -17,7 +17,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 13,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 13,"" ) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig03.uml b/ve/verig03.uml index c2f687fc8..43608186f 100755 --- a/ve/verig03.uml +++ b/ve/verig03.uml @@ -16,7 +16,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 13,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 13,"" ) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig04.uml b/ve/verig04.uml index e09d1a655..520bc3b24 100755 --- a/ve/verig04.uml +++ b/ve/verig04.uml @@ -11,7 +11,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 11,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 11,"" ) -DEFINE_FIELD(CODCMS) #define PAGE_2 #include "verig.uml" diff --git a/ve/verig06.uml b/ve/verig06.uml index d2cdb46b8..5d5088514 100755 --- a/ve/verig06.uml +++ b/ve/verig06.uml @@ -19,7 +19,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 13,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 13,"" ) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig10.uml b/ve/verig10.uml index 3da2d8c4c..e877b1e7e 100755 --- a/ve/verig10.uml +++ b/ve/verig10.uml @@ -19,7 +19,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 13,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 13,"" ) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig11.uml b/ve/verig11.uml index 400e4e011..7015fff82 100755 --- a/ve/verig11.uml +++ b/ve/verig11.uml @@ -19,7 +19,6 @@ DEFINE_FIELD(CODIVA) F_POS(CODIVA, 2, 13,"Cod. IVA " ) DEFINE_FIELD(DESIVA) F_POS(DESIVA, 22, 13,"" ) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig13.uml b/ve/verig13.uml index a83210d68..f20938766 100755 --- a/ve/verig13.uml +++ b/ve/verig13.uml @@ -41,7 +41,6 @@ DEFINE_FIELD(CODMAGC) DEFINE_FIELD(DESMAGC) DEFINE_FIELD(CODDEPC) DEFINE_FIELD(DESDEPC) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/verig14.uml b/ve/verig14.uml index aea784aa5..263c062aa 100755 --- a/ve/verig14.uml +++ b/ve/verig14.uml @@ -41,7 +41,6 @@ DEFINE_FIELD(CODMAGC) DEFINE_FIELD(DESMAGC) DEFINE_FIELD(CODDEPC) DEFINE_FIELD(DESDEPC) -DEFINE_FIELD(CODCMS) #include "verig.uml" diff --git a/ve/veuml.h b/ve/veuml.h index 034a576b1..37cb562be 100755 --- a/ve/veuml.h +++ b/ve/veuml.h @@ -105,5 +105,11 @@ #define F_CODDITTA 209 #define F_RAGSOCDITTA 210 +#define F_CDC1 251 +#define F_CDC12 262 +#define F_DESCDC1 271 +#define F_DESCDC12 282 + + //#define F_SELECT 101 #endif // veuml.h