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