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