diff --git a/ve/f33.dir b/ve/f33.dir
index 108de57e3..c479590b6 100755
--- a/ve/f33.dir
+++ b/ve/f33.dir
@@ -1,3 +1,3 @@
33
0
-$doc|0|0|652|0|Documenti di vendita|||
+$doc|0|0|687|0|Documenti di vendita|||
diff --git a/ve/f33.trr b/ve/f33.trr
index 0b3e377d3..da28b1fef 100755
--- a/ve/f33.trr
+++ b/ve/f33.trr
@@ -1,5 +1,5 @@
33
-94
+95
CODNUM|1|4|0|Codice della numerazione
ANNO|2|4|0|Anno
PROVV|1|1|0|Tipo numerazione
rovvisorio efinitivo
@@ -22,6 +22,7 @@ CODLIN|1|1|0|Codice lingua
RAGGR|8|1|0|Flag raggruppamento documento
CODPAG|1|4|0|Codice condizione di pagamento
DATAINSC|5|8|0|Data inizio scadenza
+MANDATO|1|35|0|Mandato di pagamento RID
CODABIA|10|5|0|Codice ABI banca di appoggio
CODCABA|10|5|0|Codice CAB banca di appoggio
IBAN|1|34|0|Codice IBAN di appoggio
diff --git a/ve/fatturac.src b/ve/fatturac.src
index 8de987167..e05401a68 100755
--- a/ve/fatturac.src
+++ b/ve/fatturac.src
@@ -66,6 +66,7 @@ DATASCAD2 = S_DISABILITATO
DATASCAD3 = S_DISABILITATO
DATASCAD4 = S_DISABILITATO
DATASCAD5 = S_DISABILITATO
+MANDATO = S_DISABILITATO
CODABIA = S_OBBLIGATORIO
CODCABA = S_OBBLIGATORIO
CODABIA1 = S_NORMALE
diff --git a/ve/ve0300a.src b/ve/ve0300a.src
index f7ea7ea8c..7e2ee7c9b 100755
--- a/ve/ve0300a.src
+++ b/ve/ve0300a.src
@@ -307,7 +307,7 @@ Y=0
FIELDNAME=CODVAL
MSKID=F_CODVAL
TYPE=T_STRINGA
-PROMPT="Valuta "
+PROMPT="Valuta "
SIZE=3
FLAG=U
USE=%VAL
@@ -327,7 +327,7 @@ Y=0
FIELDNAME=CODVAL
MSKID=F_CODVAL1
TYPE=T_STRINGA
-PROMPT="Valuta "
+PROMPT="Valuta "
SIZE=3
FLAG=U
USE=%VAL
@@ -376,7 +376,7 @@ Y=1
FIELDNAME=DATACAMBIO
MSKID=F_DATACAMBIO
TYPE=T_DATA
-PROMPT="Data valuta"
+PROMPT="Data cambio "
[DATA_CAMBIO2]
// se abilitato archivio cambi
@@ -387,7 +387,7 @@ FLAG=R
FIELDNAME=DATACAMBIO
MSKID=F_DATACAMBIO1
TYPE=T_DATA
-PROMPT="Data valuta"
+PROMPT="Data cambio "
USE=CAM~JO %VAL TO CAM AL 50 INTO CODTAB=CODTAB[1,3]
INPUT=CODTAB[1,3] F_CODVAL SELECT~CODTAB[4,11] F_DATACAMBIO1
DISPLAY="Valuta" CODTAB[1,3]~"Data@10" D0~"Descrizione@50" -50->S0~"Cambio@15" S4
@@ -416,7 +416,7 @@ Y=0
FIELDNAME=CODLIN
MSKID=F_CODLIN
TYPE=T_STRINGA
-PROMPT="Lingua "
+PROMPT="Lingua "
SIZE=1
FLAG=U
USE=%LNG
@@ -444,14 +444,14 @@ Y=0
FIELDNAME=CODPAG
MSKID=F_CODPAG
TYPE=T_STRINGA
-PROMPT="Cond. pag. "
+PROMPT="Condiz. pag. "
SIZE=4
FLAG=U
USE=%CPG
INPUT=CODTAB F_CODPAG
DISPLAY="Codice" CODTAB~"Descrizione@50" S0
OUTPUT=F_CODPAG CODTAB~F_DESCODPAG S0
-WARNING=Codice tipo pagamento non trovato
+WARNING=Condizione di pagamento non trovata
HELP=Inserire il codice del tipo di pagamento
SPECIAL=ADD RU ba3 -6
@@ -466,10 +466,28 @@ USE=%CPG KEY 2
INPUT=S0 F_DESCODPAG
DISPLAY="Descrizione@50" S0~"Codice" CODTAB
OUTPUT=F_CODPAG CODTAB~F_DESCODPAG S0
-WARNING=Codice tipo pagamento non trovato
-HELP=Inserire il codice del tipo di pagamento
+WARNING=Condizione di pagamento non trovata
+HELP=Inserire la descrizione della condizione di pagamento
SPECIAL=ADD RU ba3 -6
+[MANDATO]
+GROUP=400
+X=2
+Y=1
+PROMPT="Mandato RID "
+FIELDNAME=MANDATO
+MSKID=F_MANDATO
+TYPE=T_STRINGA
+SIZE=35
+FLAG=U
+USE=&EFMAN SE I0=#F_CODCF
+INPUT=CODTAB F_MANDATO
+DISPLAY="Codice@35" CODTAB~"Data@10" D0~"IBAN@34" S1~"Descrizione@50" S0
+OUTPUT=F_MANDATO CODTAB
+WARNING=Codice mandato non trovato
+HELP=Inserire il codice del mandato RID
+SPECIAL=ADD RU ef0 -1 &MAN
+
[GRSCADENZE]
GROUP=500
X=1
@@ -1514,7 +1532,7 @@ Y=0
FIELDNAME=CODNOTE
MSKID=F_CODNOTE
TYPE=T_STRINGA
-PROMPT="Cod. Note "
+PROMPT="Cod. Note "
SIZE=2
USE=%NOT
INPUT=CODTAB F_CODNOTE
diff --git a/ve/velib.h b/ve/velib.h
index 84aa8a456..2ddf3ed33 100755
--- a/ve/velib.h
+++ b/ve/velib.h
@@ -75,6 +75,7 @@ bool totdoc_hndl(TMask_field& field, KEY key);
bool codcli_hndl(TMask_field& field, KEY key);
bool dummy_hndl(TMask_field& field, KEY key);
bool condpag_hndl(TMask_field& field, KEY key);
+bool mandato_hndl(TMask_field& field, KEY key);
bool note_hndl(TMask_field& field, KEY key);
bool data_hndl(TMask_field& field, KEY key);
void set_curr_um(const TString& um);
@@ -259,6 +260,7 @@ public:
bool is_fattura() const { return tipo() == _fattura; }
bool is_bolla() const { return tipo() == _bolla; }
bool is_ordine() const { return tipo() == _ordine; }
+ bool is_ordine_quadro() const { return is_ordine() && get_bool("B12"); }
bool is_scontrino() const { return tipo() == _scontrino; }
bool controllo_prezzi() const { return _cnt_prezzi; }
const char * field_prezzo() const { return _field_prezzo; }
diff --git a/ve/velib04c.cpp b/ve/velib04c.cpp
index e607c4080..c554fe003 100755
--- a/ve/velib04c.cpp
+++ b/ve/velib04c.cpp
@@ -407,6 +407,7 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
effetto->put(EFF_DATASCAD, datascad);
effetto->put(EFF_TIPOPAG,pag.tipo_rata(n-1));
effetto->put(EFF_ULTCLASS,pag.ulc_rata(n-1));
+ effetto->put(EFF_MANDATO,doc.get(DOC_MANDATO));
effetto->put(EFF_TIPOCF, doc.get_char(DOC_TIPOCF));
effetto->put(EFF_CODCF, doc.get_long(DOC_CODCF));
effetto->put(EFF_CODVAL, doc.get(DOC_CODVAL));
@@ -420,6 +421,7 @@ long TGenerazione_effetti::group_bills(TAssoc_array& group_array, bool interatti
effetto->put(EFF_CIG,doc.get(DOC_CIG));
effetto->put(EFF_CONTSEP,doc.get(DOC_CONTSEP));
effetto->put(EFF_EFFCOMP,TRUE);
+
_effetti_array.add(effetto);
}
// aggiorna totale effetto (testata)
@@ -672,6 +674,7 @@ void TGenerazione_effetti::generate_bill(TDocumento& doc, bool interattivo) // b
effetto.put(EFF_DATASCAD, pag.data_rata(i));
effetto.put(EFF_TIPOPAG,pag.tipo_rata(i));
effetto.put(EFF_ULTCLASS,pag.ulc_rata(i));
+ effetto.put(EFF_MANDATO,doc.get(DOC_MANDATO));
effetto.put(EFF_TIPOCF, tipocf);
effetto.put(EFF_CODCF, codcf);
effetto.put(EFF_CODVAL, codval);
diff --git a/ve/velib04d.cpp b/ve/velib04d.cpp
index 8317e6855..5abc09de1 100755
--- a/ve/velib04d.cpp
+++ b/ve/velib04d.cpp
@@ -74,7 +74,7 @@ bool TConsegna_mask::on_field_event(class TOperable_field& f, TField_event e, lo
bool select = true;
const real residuo = row->get(S_QTARESIDUA-FIRST_FIELD);
const real evaso = row->get(S_QTADAEVADERE-FIRST_FIELD);
- if (evaso == ZERO && residuo > ZERO)
+ if (evaso.is_zero() && residuo > ZERO)
{
row->add(residuo.string(), S_QTADAEVADERE-FIRST_FIELD);
row->add("X", S_RIGAEVASA-FIRST_FIELD);
diff --git a/ve/velib06.cpp b/ve/velib06.cpp
index f71186d20..093076f4a 100755
--- a/ve/velib06.cpp
+++ b/ve/velib06.cpp
@@ -144,6 +144,7 @@ TDocumento_mask::TDocumento_mask(const char* td)
set_field_handler( F_CODCF, clifo_handler );
set_field_handler( F_CODPAG, condpag_hndl );
set_field_handler( F_DATAINSC, condpag_hndl );
+ set_field_handler( F_MANDATO, mandato_hndl );
set_field_handler( F_CODNOTE, note_hndl );
set_field_handler( F_DATADOC, data_hndl );
set_field_handler( F_CODLIST, codlist_handler );
@@ -3419,14 +3420,31 @@ bool TElabora_mask::elabora()
app_doc.read(out[0].head());
update_mask = true;
}
- in.rewrite();
// Aggiorna eventuale residuo da consegnare
if (e->tipo() == _consegna_ordini)
{
TParametri_elaborazione& p = e->params();
set(F_QTA, p.get("QUANTITA"));
+
+ // Azzera qtaevasa in ordini quadro
+ for (int i = 0; i < in.items(); i++)
+ {
+ TDocumento& d = in[i];
+ const TTipo_documento& td = d.tipo();
+ if (td.is_ordine_quadro()) // impedisci evasione
+ {
+ FOR_EACH_PHYSICAL_RDOC(d, r, rdoc)
+ {
+ rdoc->zero(RDOC_RIGAEVASA);
+ rdoc->zero(td.field_qtaevasa());
+ }
+ }
+ }
}
+
+ in.rewrite();
+
// Toglie spunta ai documenti selezionati
_tree.toggle_all_nodes();
}
diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp
index 96f94839d..0140a6b65 100755
--- a/ve/velib06a.cpp
+++ b/ve/velib06a.cpp
@@ -318,7 +318,9 @@ bool condpag_hndl( TMask_field& field, KEY key )
if ( field.to_check(key) || (key == K_TAB && !m.is_running()))
{
- const TString& condpag = m.get(F_CODPAG);
+ bool is_rid = false;
+
+ const TString& condpag = m.get(F_CODPAG);
if (condpag.full())
{
TDocumento& doc = m.doc();
@@ -343,11 +345,62 @@ bool condpag_hndl( TMask_field& field, KEY key )
else
m.hide(F_DATASCAD1+i);
}
+
+ is_rid = numrate > 0 && pag.tipo_rata(0) == _rid;
}
+
+ TMask_field* mandato = m.find_by_id(F_MANDATO);
+ if (mandato != NULL)
+ {
+ if (is_rid && main_app().has_module(EFAUT) && m.get_long(F_CODCF))
+ {
+ mandato->enable();
+ mandato->check_type(CHECK_REQUIRED);
+ TString query; query << "USE &EFMAN SELECT I0=" << m.get_long(F_CODCF);
+ TISAM_recordset man(query);
+ if (man.items() == 1)
+ m.set(F_MANDATO, man.get("CODTAB").as_string(), 0x3);
+ }
+ else
+ {
+ mandato->reset();
+ mandato->disable();
+ mandato->check_type(CHECK_NORMAL);
+ }
+ }
}
return true;
}
+bool mandato_hndl(TMask_field& f, KEY key )
+{
+ TMask& m = f.mask();
+ if (f.to_check(key) && !f.empty() && m.is_running())
+ {
+ const TRectype& man = cache().get("&EFMAN", f.get());
+ const TString& iban = man.get("S1");
+ if (iban.full())
+ {
+ TMask_field* iban1 = m.find_by_id(F_IBAN);
+ if (iban1)
+ {
+ iban1->set(iban);
+
+ const TString& bank = man.get("S4");
+ m.set(F_CODABIA, bank.left(5));
+ m.set(F_CODCABA, bank.mid(5));
+ m.set(F_CODABIA1, bank.left(5));
+ m.set(F_CODCABA1, bank.mid(5));
+ TEdit_field& stato = m.efield(F_IBAN_STATO);
+ if (key == K_TAB)
+ stato.set_focusdirty(false);
+ return stato.validate(key);
+ }
+ }
+ }
+ return true;
+}
+
bool note_hndl( TMask_field& f, KEY key )
{
TDocumento_mask& m = (TDocumento_mask &) f.mask();
diff --git a/ve/vetbtip.h b/ve/vetbtip.h
index ffa2fd520..0391a89ea 100755
--- a/ve/vetbtip.h
+++ b/ve/vetbtip.h
@@ -110,5 +110,6 @@
#define F_IVA_NI 504
#define F_IVA_NS 505
-#define FT_GOLEM 511
+#define FT_GOLEM 511
#define F_ADDROW 512
+#define F_QUADRO 513
diff --git a/ve/vetbtip.uml b/ve/vetbtip.uml
index a04ab8c79..1802eaf2c 100755
--- a/ve/vetbtip.uml
+++ b/ve/vetbtip.uml
@@ -66,13 +66,13 @@ LIST F_TIPO 24
BEGIN
PROMPT 2 4 "Tipo documento "
FIELD I1
- ITEM "0|Altro" MESSAGE ENABLE,2@|ENABLE,F_LORDO
- ITEM "1|Bolla" MESSAGE CLEAR,2@|ENABLE,F_LORDO
- ITEM "2|Fattura" MESSAGE ENABLE,2@|ENABLE,F_LORDO
- ITEM "3|Ordine" MESSAGE CLEAR,2@|ENABLE,F_LORDO
- ITEM "4|Scontrino" MESSAGE ENABLE,2@|DISABLE,F_LORDO|"X",F_LORDO
- ITEM "5|Conferimento soci" MESSAGE CLEAR,2@
- ITEM "6|Prestazioni ai soci" MESSAGE ENABLE,2@
+ ITEM "0|Altro" MESSAGE ENABLE,2@|ENABLE,F_LORDO|DISABLE,F_QUADRO
+ ITEM "1|Bolla" MESSAGE CLEAR,2@|ENABLE,F_LORDO|DISABLE,F_QUADRO
+ ITEM "2|Fattura" MESSAGE ENABLE,2@|ENABLE,F_LORDO|DISABLE,F_QUADRO
+ ITEM "3|Ordine" MESSAGE CLEAR,2@|ENABLE,F_LORDO|ENABLE,F_QUADRO
+ ITEM "4|Scontrino" MESSAGE ENABLE,2@|DISABLE,F_LORDO|"X",F_LORDO|DISABLE,F_QUADRO
+ ITEM "5|Conferimento soci" MESSAGE CLEAR,2@|DISABLE,F_QUADRO
+ ITEM "6|Prestazioni ai soci" MESSAGE ENABLE,2@|DISABLE,F_QUADRO
END
STRING F_PROFILO 8
@@ -324,16 +324,10 @@ BEGIN
FIELD B6
END
-STRING F_NATURA 1
+BOOLEAN F_QUADRO
BEGIN
- PROMPT 44 18 "Natura transazione "
- FLAGS "U"
- USE %INT
- INPUT CODTAB F_NATURA
- DISPLAY "Codice" CODTAB
- DISPLAY "Descrizione@50" S0
- OUTPUT F_NATURA CODTAB
- FIELD S3[4,4]
+ PROMPT 44 18 "Ordine quadro"
+ FIELD B12
END
ENDPAGE
@@ -1228,6 +1222,23 @@ BEGIN
FIELD S11[5,5]
END
+GROUPBOX DLG_NULL 42 3
+BEGIN
+ PROMPT 41 1 "@bIntra"
+END
+
+STRING F_NATURA 1
+BEGIN
+ PROMPT 42 2 "Natura transazione "
+ FLAGS "U"
+ USE %INT
+ INPUT CODTAB F_NATURA
+ DISPLAY "Codice" CODTAB
+ DISPLAY "Descrizione@50" S0
+ OUTPUT F_NATURA CODTAB
+ FIELD S3[4,4]
+END
+
GROUPBOX DLG_NULL 62 3
BEGIN
PROMPT 1 8 "@bStampa documenti avanzata"
diff --git a/ve/veuml.h b/ve/veuml.h
index c7f3843b0..a536de1a5 100755
--- a/ve/veuml.h
+++ b/ve/veuml.h
@@ -122,6 +122,7 @@
#define F_CONTSEP 226
#define F_PATIPOCON 227
#define F_IVAXCASSA 228
+#define F_MANDATO 229
#define F_CDC1 251
#define F_CDC12 262
@@ -152,4 +153,6 @@
#define F_USERFLD 450
+#define DLG_LVPLANNING 801
+
#endif // veuml.h